java JPA SQL结果映射
我的代码使用Sql结果映射将查询结果映射到DTO,并使用这些DTO创建列表,但在我的数据库中,id可以是null
,这给映射带来了麻烦。这就是为什么我不想用它来代替它,有没有办法为这些dto生成id,而不是从sql查询中获取它们?我无法更改我的sql数据,因为它不是个人数据
我的映射代码看起来像这样,仅供参考,我没有使用@ConstructorResult
,我不确定@EntityResult
和@ConstructorResult
之间有什么区别,但在实体中,我给出了列名,我必须将我的表列与我的DTO类相匹配
@SqlResultSetMapping(
name = "ApplicationMapping",
entities = @EntityResult(entityClass = com.sqlresultsetmapping.ApplicationDto.class,
fields = {
@FieldResult(name = "name", column = "name"),
@FieldResult(name = "create", column = "create"),
@FieldResult(name = "update", column = "update"),
@FieldResult(name = "version", column = "version"),
@FieldResult(name = "image", column = "image"),
@FieldResult(name = "id", column = "id")}))
# 1 楼答案
您必须使用ConstructorResult,因为您希望得到一个DTO作为结果
EntityResult用于将SQL结果映射到实体
如果使用ConstructorResult,则ID列中的空值无关紧要。但使用EntityResult时,实体必须具有ID