JPA SQL 结果映射
JPA SQL Result Mapping
我的代码正在使用 Sql 结果映射将查询结果映射到 DTO,并使用这些 dto 创建列表,但在我的数据库中 id 可以是 null
,这给我带来了映射麻烦。这就是为什么我不想使用它而不是那个,有没有办法为这些 dto 生成 id 而不是从 sql 查询中获取它们?我无法更改我的 sql 数据,因为它不是个人数据。
我的映射代码看起来像这样,仅供参考,我没有使用 @ConstructorResult
,我不确定 @EntityResult
和 @ConstructorResult
之间有什么区别,但在实体中我是给出列名,我必须将我的 table 列与我的 DTO class.
相匹配
@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")}))
您必须使用 ConstructorResult,因为您希望将 DTO 作为结果。
EntityResult 用于将 SQL 结果映射到实体。
如果您使用 ConstructorResult,则 ID 列中的 null 无关紧要。但是对于 EntityResult,一个实体必须有一个 ID。
我的代码正在使用 Sql 结果映射将查询结果映射到 DTO,并使用这些 dto 创建列表,但在我的数据库中 id 可以是 null
,这给我带来了映射麻烦。这就是为什么我不想使用它而不是那个,有没有办法为这些 dto 生成 id 而不是从 sql 查询中获取它们?我无法更改我的 sql 数据,因为它不是个人数据。
我的映射代码看起来像这样,仅供参考,我没有使用 @ConstructorResult
,我不确定 @EntityResult
和 @ConstructorResult
之间有什么区别,但在实体中我是给出列名,我必须将我的 table 列与我的 DTO class.
@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")}))
您必须使用 ConstructorResult,因为您希望将 DTO 作为结果。
EntityResult 用于将 SQL 结果映射到实体。
如果您使用 ConstructorResult,则 ID 列中的 null 无关紧要。但是对于 EntityResult,一个实体必须有一个 ID。