我有两个这样的域类。
@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, E> {
D toDto(E e);
E toEntity(D d);
}
@Mapper(componentModel = "spring")
public interface StudentMapper extends GenericMapper<StudentDto, Student> {
}
但是我在编译Mapper时出错了。
" StudentDto没有可访问的构造函数."
这些代码有什么问题?
我希望学生是不可修改的。使用lombok和mapstruct的最佳方式是什么?
您可以从这里获得源代码。https://github.com/jangdaewon/sandbox.lombokmapstruct
这有点违背直觉,但是在注释处理器列表中,Lombok必须放在mapstruct之后。Mapstruct检测Lombok并等待,直到Lombok完全完成其工作(Lombok可能需要几轮注释处理)。
因此,只需在< code >中更改处理器的顺序
<annotationProcessorPaths>
<path>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>${mapstruct.version}</version>
</path>
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
</path>
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok-mapstruct-binding</artifactId>
<version>${lombok-mapstruct-binding.version}</version>
</path>
</annotationProcessorPaths>
我在scala项目中使用Flyway版本5.2.4,并且我的所有迁移脚本都在src/main/Resources/db/迁移下,具有以下文件夹结构 位置设置为db.migrations(没有任何前缀。Flyway留档表示如果不使用前缀,则支持sql/java迁移) V1和V2似乎没有问题。但是V3被忽略了。我尝试添加V3\uu java\u迁移。java也一样,它没有什么不同。是否有人有幸添加了非
我有一个非常简单的超文本标记语言文件,其中有一个按钮。当单击此按钮时,函数loadDoc()在javascript文件(ajax.js)中运行。带有IDajax_text的div被更改为“单击”。到目前为止还不错。 现在,我试图对一个php文档进行ajax调用。php文档应该响应“Hello World!”。我试图通过使用警报(alert(msg))来显示此消息。php文档与我的HTML文档位于同
假设我们在外部工件中有一个接口,我们无法更改: 以及此接口的一个实现,具有对应于父接口的更多成员。Lombok生成的getters/setters不能被编译器识别,所以我必须添加实际的getter方法来使下面的类可编译。 编译错误是接口方法未实现时的标准错误: my.package.测试实现不是抽象的,并且不会覆盖TestInterface中my.package.抽象方法isTest() 假设Lo
在简单使用lombok、IDE(如Netbeans)的过程中,Intellij允许使用lombok库注入的方法,例如@Getter 代码返回this.getVar()不被Test类识别。但是如果我们使用另一个类,例如Test2,在这种情况下我们可以使用getter方法。 环境: Netbeans 8.0.2 龙目岛1.16.13 Jdk 1.7 项目类型Java应用程序
我正在使用Mapstruct 1.3.0投影这个源对象; 进入本DTO: 在我的界面中,我没有为字段“noMappingDefined”定义任何映射 在构建项目时,将POM中的compilerArgs中的UnappedTargetPolicy设置为WARN不会导致任何通知,并且在Mapstruct生成的目标类中找不到没有映射的字段。 生成的类没有像预期的那样包括未映射的字段,但是我希望在构建项目时
我试图使用IntelliJ2017 Ultimate构建/运行一个使用MapStruct的Spring Boot应用程序。这是一个分级项目。我的问题是IntelliJ似乎没有运行MapStruct注释处理器。我意识到我可以配置IntelliJ来委托Gradle构建过程(请参见此),但我希望简单地配置IntelliJ来使用APT来生成必要的类本身。 我已经为我的项目启用了APT,但是我的类仍然没有生