【问题标题】:JPA SQL Result MappingJPA SQL 结果映射
【发布时间】:2020-07-22 10:51:35
【问题描述】:

我的代码是使用 Sql Result Mapping 将查询结果映射到 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")}))

【问题讨论】:

    标签: java sql jpa hibernate-mapping


    【解决方案1】:

    您必须使用 ConstructorResult,因为您希望将 DTO 作为结果。

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

    如果您使用 ConstructorResult,则 ID 列中的 null 将无关紧要。但是对于 EntityResult,实体必须有一个 ID。

    【讨论】:

    • 是的,它确实有效!谢谢你!我更新了我的问题,你能检查一下我的其他问题吗?
    • 请在单独的问题中提出这个问题,因为它不相关
    猜你喜欢
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    • 2014-06-25
    • 1970-01-01
    • 2017-02-12
    • 1970-01-01
    • 2012-01-04
    相关资源
    最近更新 更多