地图似乎无法识别Lombok的@superbuilder
我有两个这样的域类. @Getter @Setter public class User { private String name; } @Getter @Setter public class Student extends User { private int grade; } 我还有两个这样的DTO课程. @Getter @SuperBuilder public class UserDto { private final String name; } @Getter @SuperBuilder public class StudentDto extends UserDto { private final int grade; } 所以我做了一个映射器类StudentMapper,它扩展了genericmapper. public interface GenericMapper { D toDto(E
14 2024-04-04
编程技术问答社区
在mapstruct中用构建器将一个对象映射到一个不可变的对象(使用immutables注解处理器)。
我们正在使用 immutables框架 生成所有DTO.现在,我们想用 mapsstruct 将这些对象映射到另一个对象.但是生成的DTO是不变的,没有设置器,也没有构造函数,与构建器模式相对应.它们仅通过静态builder() -method访问的相应构建器填充. 我们试图将dto1映射到dto22.builder,如果MAPSTRUCT会在构建器中识别设置器,但它们没有void返回类型,但是返回构建器本身以进行流利的串联. 所以这是示例的代码. 我们有两个接口 @Value.Immutable public interface MammalDto { public Integer getNumberOfLegs(); public Long getNumberOfStomachs(); } 和 @Value.Immutable public interface MammalEntity { public Long getNumberOfL
10 2024-04-04
编程技术问答社区
如何用mapstruct将一个枚举映射到一个布尔值?
我有一些自动生成的枚举,我需要在映射映射器中绘制以bulean值的映射.他们像这样: enum YN { Y("Y"), N("N") } enum ZO { _0("0"), _1("1") } 我尝试使用@valuemappings(),但它不起作用: @ValueMappings({ @ValueMapping(source="Y", target=true), @ValueMapping(source="N", target=false) ) Boolean map(YN value); 如何实现此映射? 解决方案 valueMappings 两个Enum s.您不能使用它们将Enum映射到其他东西.对于定义的映射,您将必须自己编写一个映射.然后,地图可以在其他映射器中使用该图. abstract class Mapper { Boolean map(YN value) { return
8 2024-04-01
编程技术问答社区
我怎样才能把Guice和Mapstruct结合起来?
我正在使用球衣和guice di,我想使用映射界面 使用@Inject注释. 因此,是否有某种方法可以强迫Guice自动映射接口实现? 解决方案 您可以使用@Mapper(componentModel = "jsr330")配置以JSR 330注释的映射器的实现.您可以在您可以将映射器接口与模块中的实现类绑定. 绑定它们的一种方法是使用guice bind(MyDtoMapper.class).to(MyDtoMapperImpl.class) 绑定它们的另一种方法是使用bind(MyDtoMapper.class).toInstance(MyDtoMapper.INSTANCE) 其他解决方案 遇到了使用GUICE和JSR330 ComponentModel的问题,尽管我不记得它们到底是什么.我的用例更为复杂,因为我还需要将另一项服务传递给映射器装饰器.也应该适合您的简单情况.最终在GUICE模块中执行提供商方法,例如: public YourModu
8 2024-03-21
编程技术问答社区
如何将mapstruct和springboot bean一起使用?@自动连接
@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
8 2024-03-21
编程技术问答社区
架构领域模型和视图模型
我试图通过春季启动和域驱动设计来构建应用程序.我对域模型(与表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 中写了静态方法. 它
16 2024-03-03
编程技术问答社区
如何在运行时提供MapStruct Mapping注解映射的元数据
我们使用 ui模型中指定字段. 我们的MapStructParser可以获取相应的商业模型字段名称并创建所需的标准以对其进行排序. 示例: public interface ModelMapping extends BridgeMapping { @Mapping(source = "zip", target = "plz") UiModel modelToUiModel(BusinessModel model, @MappingTarget UiModel uiModel); } 问题: 如何读取@Mapping(source = "zip", target = "plz")注释并获取source和target值? Mapping - 通道具有RetentionPolicy.CLASS,因此无法通过反射访问. 解决方案 我们通过使用 asm (Bytecode操纵和分析框架)解决了这个问题. 读取Ma
8 2024-02-26
编程技术问答社区
在Angular + Java项目中何时使用DTOs和Matpstruct
好吧,我有一个很大的项目,我想正确做. 问题:我有几个具有关系的实体,我需要一起在页面上显示.在视图中显示前3个事件. 事件与 EventInstance ,A CATCATITATION POLICY 以及多个定价(截止日期)和多个 eventnotes (通过您的注册状态过滤) 可能的解决方案:(假设我正在使用服务/可观察到的数据来获取数据,并且我拥有所有Java&Angular模型等) ) a)在Angular中获取事件,然后获取事件的实例,每个实体自己服务的相关定价,注释和取消设备. b)创建Java服务,该服务返回一个自定义观看的数据,并将所有数据编组在一起. c)使用MapStruct为每个实体创建DTO/MAPPENS/等,我可以调用事件服务... .....但是,如果我这样做,我不需要为所有这些实体进行DTO/映射...并且我不需要为与这些关系有关系的每个实体执行此操作对象...然后这些实体服务只需要?返回dtos ..现在听起来太复杂了
4 2024-02-21
编程技术问答社区
Spock在内存中实现mapstruct在映射器中的自动连接
嗨,我想在没有H2的内存实现中测试某些方法. 在usermapper的inth中,我有. 当我尝试运行测试时,我对此passwordencodermapper具有NullPoInterException. 我如何像第一次屏幕截图(authservice)一样注入自动射击,而没有加载弹簧上下文( @springboottest ). 解决方案 passwordEncoderMapper passwordEncoderMapper的原因是因为您将Spring componentModel与Mappers#getMapper混合.你不应该那样做. 使用自定义componentModel时,应始终使用该依赖项注入来获取映射. 您可以为测试做什么是与InjectionStrategy#CONSTRUCTOR一起使用Mapper#injectionStrategy,然后通过提供正确的依赖项来实例化映射器.
24 2023-11-07
编程技术问答社区
地图:嘲笑嵌套映射器
我使用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
14 2023-11-07
编程技术问答社区
如何为通过Spring注入的mapstruct抽象映射器编写Junit测试
我正在使用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
38 2023-11-07
编程技术问答社区
地图结构:当源为null时,目标不应设置为null
我正在尝试使用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,
38 2023-10-14
编程技术问答社区
延迟加载在使用hibernate的JPA中不起作用
我在春季启动应用程序中使用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
46 2023-09-13
编程技术问答社区
Spring Tool Suite/Gradle/MapStruct-找不到映射器的实现
我已经搜索了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 {
32 2023-09-12
编程技术问答社区
Mapstruct返回类型
没有为返回类型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
22 2023-09-12
编程技术问答社区
无法映射属性.考虑声明/实施映射方法.无法从不合时宜的类型中生成映射方法到迭代类型
我似乎无法正确使用映射 @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
42 2023-09-12
编程技术问答社区
如何使用MapStruct将String转换为Map?
我在春季启动应用程序中具有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
28 2023-09-12
编程技术问答社区
使用映射列表将对象列表转换为长ID列表
我正在使用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
24 2023-09-12
编程技术问答社区
MapStruct向dto添加一个新的计算字段
我正在尝试使用mapstruct将实体Order映射到OrderDTO.我想添加到OrderDTO新字段total,此字段在原始实体Order中不可用,应使用Order中可用的信息进行计算(订单条目价格,数量,税收.. ). 我在OrderDTO中创建了一个新的字段total,并且正在尝试通过在映射器接口中添加默认方法来映射它: public interface OrderMapper { ... default BigDecimal orderToTotal(Order order){ return logicToCalculateTotal(); } } 当我午餐时,构建映射启动错误 未绘制的目标属性:" Total". 任何想法如何解决这个问题? 谢谢 解决方案 有多种方法可以实现所需的目标.第一种方法是使用@AfterMapping或@BeforeMapping.如果您使用的话,您的代码看起来像:
38 2023-09-12
编程技术问答社区
如何在Spring Boot中使用Mapstruct映射父代和子代?
我有父母(产品)和孩子(书籍,家具),并希望将产品实体映射到产品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")
28 2023-09-12
编程技术问答社区