我正在使用SpringBoot2.2.5以上的最新版本和Java15、lombok、Mapstruct来映射一些POJO。
使用spring boot的2.2.5版时,我得到了预期的结果:
@Generated(
value = "org.mapstruct.ap.MappingProcessor",
date = "2021-01-02T21:59:24+0100",
comments = "version: 1.4.1.Final, compiler: javac, environment: Java 15.0.1 (Oracle Corporation)"
)
@Component
public class ProduitMapperImpl implements ProduitMapper {
@Override
public ProduitDtoResponse produitToProduitDtoResponse(Produit produit) {
if ( produit == null ) {
return null;
}
ProduitDtoResponseBuilder produitDtoResponse = ProduitDtoResponse.builder();
produitDtoResponse.id( produit.getId() );
produitDtoResponse.nom( produit.getNom() );
produitDtoResponse.prix( produit.getPrix() );
return produitDtoResponse.build();
}
@Override
public Produit produitToProduitDtoResponse(ProduitDtoResponse produitDto) {
if ( produitDto == null ) {
return null;
}
ProduitBuilder produit = Produit.builder();
produit.id( produitDto.getId() );
produit.nom( produitDto.getNom() );
produit.prix( produitDto.getPrix() );
return produit.build();
}
}
但是当使用2.4及以上版本时,没有构建器,而是使用java new关键字,而不是其他字段,我得到:
这是maven pom配置不起作用:BOM
@Generated(
value = "org.mapstruct.ap.MappingProcessor",
date = "2021-01-02T22:05:16+0100",
comments = "version: 1.4.1.Final, compiler: javac, environment: Java 15.0.1 (Oracle Corporation)"
)
@Component
public class ProduitMapperImpl implements ProduitMapper {
@Override
public ProduitDtoResponse produitToProduitDtoResponse(Produit produit) {
if ( produit == null ) {
return null;
}
ProduitDtoResponse produitDtoResponse = new ProduitDtoResponse();
return produitDtoResponse;
}
@Override
public Produit produitToProduitDtoResponse(ProduitDtoResponse produitDto) {
if ( produitDto == null ) {
return null;
}
Produit produit = new Produit();
return produit;
}
}
我唯一更改的是SpringBoot版本,它可以正常工作,请问SpringBoot 2.4及以上版本是否有任何解决方法或问题?
您的问题是,正因为如此,在pom.xml
中:
<version>${lombok.version}</version>
您从父pom的父pom获得Lombok版本,spring boot starter父pom
(您的祖父母pom?),因此,使用spring boot 2.4.0,您将获得一个更新版本的Lombok。
从Lombok 1.18.16开始,您需要添加另一个依赖项。请参见MapStruct常见问题解答中的此答案:
如果您使用的是Lombok 1.18.16或更新版本,则还需要添加Lombok mapstruct绑定,以使Lombok和mapstruct协同工作。
他们有一个示例项目来演示如何一起使用它们。下面是示例pom.xml
的相关部分:
<properties>
<!-- . . . -->
<lombok-mapstruct-binding.version>0.2.0</lombok-mapstruct-binding.version>
</properties>
<!-- . . . -->
<annotationProcessorPaths>
<!-- . . . -->
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok-mapstruct-binding</artifactId>
<version>${lombok-mapstruct-binding.version}</version>
</path>
</annotationProcessorPaths>
本文向大家介绍关于spring版本与JDK版本不兼容的问题及解决方法,包括了关于spring版本与JDK版本不兼容的问题及解决方法的使用技巧和注意事项,需要的朋友参考一下 在用ssh框架测试时出现问题,如下: 解决方法:更换JDK或者换spring包 spring-xx-3.xx对应JDK7 spring-xx-4.xx对应JDK8 补充:下面看下JDK8与Spring4以下的版本不兼容问题 昨天
本文向大家介绍详解DBeaver连接MySQL8以上版本以及解决可能遇到的问题,包括了详解DBeaver连接MySQL8以上版本以及解决可能遇到的问题的使用技巧和注意事项,需要的朋友参考一下 数据库MySQL版本8.0.18 下载一个DBeaver.exe 下载地址:https://dbeaver.io/download/ 点击新建 --》数据库连接 --》下一步
} 问题1:“汪汪狗”的结果。shouldWakeUp()'被忽略 问题2:从未使用该方法的返回值 这是什么意思?我应该如何解决此问题?
一直在尝试解决这个问题,但没能解决。这是udacity课程,我试图使用挂起的意图创建通知,但挂起的意图是可变的,我尝试了这种方式。 视图模型 片段 当我正在研究由gradle依赖项解决的其他类似问题时,我已经添加了 但是显示这个错误 Udacity启动器代码
我有一个查询,它可以在MySQL8.0上运行,但不能在下面的版本上运行,比如MySQL5.5。当我在web服务器上遇到这个错误时,如何使其兼容:#1064-您的SQL语法中有一个错误;查看与您的MySQL服务器版本相对应的手册,以了解第11行“(partition by pid order by Age”附近使用的正确语法 https://dbfiddle.uk/?rdbms=mysql_8.0&
分析错误:语法错误,第50行的/home/capollos/public\u html/canopyinteriors/index.php中出现意外的“类”(T_类),需要标识符(T_字符串)或变量(T_变量)或“{”或“$” 第50行。。这与主机cpanel上的php版本有关。