嗨,我想在没有H2的内存实现中测试某些方法. 在usermapper的inth中,我有. 当我尝试运行测试时,我对此passwordencodermapper具有NullPoInterException. 我如何像第一次屏幕截图(authservice)一样注入自动射击,而没有加载弹簧上下文( @springboottest ). 解决方案 passwordEncoderMapper passwordEncoderMapper的原因是因为您将Spring componentModel与Mappers#getMapper混合.你不应该那样做. 使用自定义componentModel时,应始终使用该依赖项注入来获取映射. 您可以为测试做什么是与InjectionStrategy#CONSTRUCTOR一起使用Mapper#injectionStrategy,然后通过提供正确的依赖项来实例化映射器.
以下是关于 mapstruct 的编程技术问答
我使用Mapstruct映射我的实体,我正在使用Mockito嘲笑我的对象. 我想测试一种包含带有映射的映射的方法. 问题是嵌套映射器在我的单元测试中始终为无效(在应用程序中效果很好) 这是我的映射器声明: @Mapper(componentModel = "spring", uses = MappingUtils.class) public interface MappingDef { UserDto userToUserDto(User user) } 这是我的嵌套映射器 @Mapper(componentModel = "spring") public interface MappingUtils { //.... other mapping methods used by userToUserDto 这是我要测试的方法: @Service public class SomeClass{ @Autowired
我正在使用MAPSTRUCT,MAPSTRUCT-JDK8版本1.1.0.Final和定义的抽象类,我通过Spring注入. 我正在寻找如何通过JUNIT测试进行测试? 我基本上是一个主要的映射器,它将使用2个子映射器 @Mapper(componentModel = "spring", uses = {SubMapper1.class, SubMapper2.class}) public abstract class MainMapper { @Mapping(target = "field1", qualifiedByName = {"MyMapper2Name", "toEntity"}) public abstract MyEntity toEntity(MyDto pDto); public MyDto fromEntity(MyEntity pEntity) { // Specific code, hence why I use Abst
我正在尝试使用mapsstruct 1.2.0.cr2映射嵌套属性. (示例地图 customer.address.housenumber to userdto.homedto.addressdto.houseno ). 期望:我不想在customer.address为null时将地址设置为null.由于addressDto包含已经从其他不同来源设置的"县名"和其他属性. 请建议如果我可以设置属性/设置,以便在源为null时未设置为null的目标. @Mapper( nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS ) public interface CustomerUserMapperNullCheck { @Mapping(source="address", target="homeDTO.addressDTO" ) void mapCustomer(Customer customer,
我在春季启动应用程序中使用JPA与Hibernate一起使用.每当我尝试使用JPA方法获取敌人时,它将返回实体以及其中存在的所有关联.我想按需获取关联的实体(懒负载),因此我在域类中提供了fetch = fetchType.lazy.但是它仍然返回所有条目. 以下是代码: case.java @Entity @Table(name="smss_case") public class Case implements Serializable { /** * */ private static final long serialVersionUID = -2608745044895898119L; @Id @Column(name = "case_id", nullable = false) @GeneratedValue(strategy = GenerationType.IDENTITY
我试图通过春季启动和域驱动设计来构建应用程序.我对域模型(与表DB的字段匹配)和查看模型(响应API)有问题. 域模型: ex: 类名称 @Getter @NoArgsConstructor @AllArgsConstructor class Name { String value; } 类产品 @Getter @NoArgsConstructor @AllArgsConstructor class Product{ Name name; } ViewModel: @Data @NoArgsConstructor @AllArgsConstructor class ProductView { //int prodId; String prodName; } 按类选择数据db 产品,构建器对 productView 的响应API.当那个从域模型转换为ViewModel,反之亦然,我在 ProductView 中写了静态方法. 它
我已经搜索了Stackoverflow以找到我的问题的答案.虽然我找到了许多提供的解决方案,但在我的情况下都没有工作. 我必须将映射构造用于工作中的项目,因此我正在尝试通过我使用的是1.4.2.final而不是1.5.0.rc1,因为我在使用通过切换到前来解决的后者时遇到了不同的问题. 这是我代码的部分: build.gradle plugins { id 'org.springframework.boot' version '2.6.5' id 'io.spring.dependency-management' version '1.0.11.RELEASE' id 'java' } group = 'com.tutorialspoint' version = '2.4.2' sourceCompatibility = '1.8' repositories { mavenCentral() } dependencies {
没有为返回类型org.springframework.data.data.data.page.page.page. 注册实现类型 @Mapper(componentModel = "spring", uses = { OptionalMapper.class, VehicleImageMapper.class, GearShiftMapper.class, FuelMapper.class, ColorMapper.class, ModelMapper.class, UserMapper.class }) public interface VehicleMapper { VehicleMapper INSTANCE = Mappers.getMapper(VehicleMapper.class); VehicleDTO vehicletoVehicleDTO(Vehicle vehicle); Page vehicleto
我似乎无法正确使用映射 @Mapping(target = "products", source = "itemBookType") SearchBookingResult backToTp(ItemBook itemBook); 运行此代码时,我会收到以下错误: Can't map property "ProductType itemBookType" to "List products". Consider to declare/implement a mapping method: "List map(ProductType value)". 我在底部添加了以下代码: List map(ProductType value); ,但仍然会返回以下错误: Can't generate mapping method from non-iterable
我在春季启动应用程序中具有Story实体.它具有String字段storyInfo,其中包含: {"title":"random title", "description":"random description"} 对于我的Story实体,我有StoryDTO map字段称为storyInfo. 问题是:我如何使用Strory将字段从Strory中转换为StoryDTO in StoryDTO in MapStruct? 解决方案 尝试以下代码,灵感来自@Mapper(componentModel = "spring") public interface StoryMapper { @Mappings({ @Mapping(source = "storyInfo", target = "storyInfo", qualifiedByName = "fromJsonToMap") }) StoryDTO toStoryDTO(Story story); @Mapping
我正在使用MapStruct将实体转换为dtos. 我有一个实体a列表B: public class A { List bs; } 我想在ADTO类中列出B ID列表: public class ADto { List bIds; } 解决方案 这种方法类似于方法由 l_cleo "> l_cleo )我们想将实体映射到其ID的用例.如果您对我的答案进行投票,您可能想给他们一个投票权.我的答案受到他们的启发. 首先,我们创建一个接口HasId,让所有具有long getId() -Method的实体实现此接口: public interface HasId { long getId(); } @Builder @Value public class A implements HasId { long id; List bs; } @Builder @Value public class B
我正在尝试使用mapstruct将实体Order映射到OrderDTO.我想添加到OrderDTO新字段total,此字段在原始实体Order中不可用,应使用Order中可用的信息进行计算(订单条目价格,数量,税收.. ). 我在OrderDTO中创建了一个新的字段total,并且正在尝试通过在映射器接口中添加默认方法来映射它: public interface OrderMapper { ... default BigDecimal orderToTotal(Order order){ return logicToCalculateTotal(); } } 当我午餐时,构建映射启动错误 未绘制的目标属性:" Total". 任何想法如何解决这个问题? 谢谢 解决方案 有多种方法可以实现所需的目标.第一种方法是使用@AfterMapping或@BeforeMapping.如果您使用的话,您的代码看起来像:
我有父母(产品)和孩子(书籍,家具),并希望将产品实体映射到产品DTO.如您所见,产品被映射并存储在数据库中的单个表中.我该如何映射父母的产品,其中有额外的孩子的细节? 我已经看 this https://github.com/mapsstruct/mapsstruct/issues/366" rel =" noreferrer" -Child-dtos-ininto-a-single-request-spring-boot"> this 有一些想法,但没有运气 实体 @Entity @Table(name = "product") @Inheritance(strategy = InheritanceType.SINGLE_TABLE) public class Product { @Id private long id; private String productName; } @Entity @DiscriminatorValue("Book")
我正在尝试使用映射来映射DTO和实体对象之间的转换,但是生成的映射器实现仅返回 empty beermapperimpl @Generated( value = "org.mapstruct.ap.MappingProcessor", date = "2020-11-05T07:42:21+0800", comments = "version: 1.3.0.Final, compiler: javac, environment: Java 11 (Oracle Corporation)" ) @Component public class BeerMapperImpl implements BeerMapper { @Override public BeerDto beerToBeerDto(Beer beer) { if ( beer == null ) { return null;
我是Spring Boot的新手, mapsstruct 工具. 之前,一个项目(由其他团队使用这些技术编写)并未启动.然后,我对映射器抽象类进行了一些更改,但是现在映射对象在应用程序启动时以null为单位. 映射器摘要类: @Mapper(componentModel = "spring") public abstract class UserAndEmployeeMapper { public UserAndEmployeeMapper INSTANCE = Mappers.getMapper( UserAndEmployeeMapper.class ); @Mapping(source = "username", target = "name") @Mapping(source = "ssn", target = "ssn", defaultValue = "xxxxxx" ) @Mapping(target = "salary
@Mapper(componentModel = "spring") public interface DemoConvert { public static DemoConvert INSTANCE = mappers.getMapper(DemoConvert.class); @AutoWired private PersonInfoSearchService personInfoSearchService; @Mapping(source = "name", target = "name") @Mapping(source = "id", target = "gender", expression = "java(personInfoSearchService.searchGenderById(id))") PersonDTO toPerson(TeacherDTO teacherDTO); } 如何一起使用Mapstruct
我要使用CounterService的映射器类.我正在尝试注入构造函数,但这不起作用,null正在打印. @Mapper(componentModel = "spring", uses = CounterService.class, injectionStrategy = InjectionStrategy.CONSTRUCTOR) public abstract class CarMapper { private CounterService counterService; public CarMapper(CounterService counterService) { this.counterService = counterService; } public abstract Car dtoToEntity(CarDto carDto); public CarDto entityToDto(Car car) {
我正在用Spring Boot和Hibernate编写MVC REST.我决定使用MAPSTRUCT进行DTO映射.看来我根据指南完成了所有操作,但是发出了错误.有什么问题,我听不懂.论坛和Google上的信息很少. P.S.起初,我以为问题在Lombok中,所以我删除了Lombok并手动分配了getters / setters.然后问题没有解决.我在Drink班级和DrinkDTO中都参加了getters / setters.它仍然没有帮助. 饮料: @Entity @Table(name = "drink", schema = "public") public class Drink { public Drink() { // Constructor for Hibernate } // Fields // private @Id @GeneratedValue Long id; @Colum
// Driver model @Data @AllArgsConstructor @NoArgsConstructor public class Driver { private String driverName; private String licenseNumber; } // Car model @Data @AllArgsConstructor @NoArgsConstructor public class Car { private String make; private List drivers; private CarType type; } // Car DTO @Data @AllArgsConstructor @NoArgsConstructor public class CarDto { private String make; private Integer totalDriver