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。