有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    您必须使用ConstructorResult,因为您希望得到一个DTO作为结果

    EntityResult用于将SQL结果映射到实体

    如果使用ConstructorResult,则ID列中的空值无关紧要。但使用EntityResult时,实体必须具有ID