我有以下情况,我简化了我的实际案例,并创建了最小示例来展示我的案例:
两个空的(在本例中不相关)classessphone
和phone
和映射器继承结构testsupermapper
使用一个方法声明将phone
映射到phone
,两个空接口testparent1mapper
和testparent2mapper
都扩展testsupermapper
,一个实际映射器接口testmapper
和TestMapperImpl
类实现MapStruct生成的TestMapper
。此设置的问题是mapstruct生成TestMapperImpl
,其内容如下:
import javax.annotation.processing.Generated;
@Generated(...)
public class TestMapperImpl implements TestMapper {
@Override
public Phone map(PhoneDto phoneDto) {
if ( phoneDto == null ) {
return null;
}
Phone phone = new Phone();
return phone;
}
@Override
public Phone map(PhoneDto phoneDto) {
if ( phoneDto == null ) {
return null;
}
Phone phone = new Phone();
return phone;
}
}
所以它不会组合,因为方法Phone map(PhoneDto)
声明了两次,一次是通过TestParent1Mapper
继承路径,第二次是通过TestParent2Mapper
。在不改变我的继承结构的情况下,是否有可能避免这种情况?Mapstruct版本1.4.1.Final,jdk 11。实际的javac异常是java:testMapperImpl类中已经定义了方法映射(PhoneDto)。
原来这是mapstruct的问题,我已经创建并发布了mapstruct的维护者已经修复了它:https://github.com/mapstruct/mapstruct/issues/2437
我们正在使用带有Spring数据的MapStruct在JPA实体和DTO类之间进行转换。所有映射器都使用方法beanToDTO()和dtoToBean()遵循相同的模式。经过一次学习治疗后,我们就有了这一切。现在我们尝试使用Spring注入来替换JPA实体、DTO和映射器类上的实现。我们有JPA实体和DTO替换工作。所以现在我们尝试让Spring注入替代映射器实现。 对于我们的问题,我们可以子类映
我有一个BaseEntity,当我像这样制作mapper时,它有一个名为Customer的子级: Mapstruct不会自动映射BaseEntity字段。你能告诉我怎么做吗?
例如,我有以下接口映射器: 在代码中,您可以看到映射和一些默认方法,其中包含其他映射。如何在Mapstruct映射中使用这些方法,以便Mapstruct使用这些方法在字段中填充值?
1. 前言 本节课程和大家一起学习继承映射。通过本节课程的学习,你将了解到: 什么是继承映射; 实现继承映射的 3 种方案。 2. 继承映射 学习继承映射之前,需要搞清楚什么是继承映射? 继承是 OOP 中的概念,其目的除了复用代码之外,还用来描述对象在现实世界中的关系。 为了更好地讲解继承映射,咱们再在数据库中创建一张老师表。数据库中多了一张表,按照使用 Hibernate 的套路,理所当然应该
本文向大家介绍关于C++中菱形继承和虚继承的问题总结,包括了关于C++中菱形继承和虚继承的问题总结的使用技巧和注意事项,需要的朋友参考一下 前言 菱形继承是多重继承中跑不掉的,Java拿掉了多重继承,辅之以接口。C++中虽然没有明确说明接口这种东西,但是只有纯虚函数的类可以看作Java中的接口。在多重继承中建议使用“接口”,来避免多重继承中可能出现的各种问题。本文将给大家详细介绍关于C++菱形继承
我有麻烦映射一个嵌套dto字段正确与MapStruct。我有几个DTO: 具有相应的映射器 到目前为止,一切工作都很好,生成的代码自动连接其他需要的映射器来正确地构建DTO。例如生成的仪器映射器实现 现在,当我试图创建一个包含嵌套工具dto的映射器时遇到了麻烦。映射器应使用instrumentMapper正确创建所需的dto。DTO: 映射器: 生成的代码: 现在media mapper得到了很好