首页 > 解决方案 > JPA 多连接命名查询结果到 POJO

问题描述

我有一个如下所示的 JPA 命名查询,而不是原生查询。

@NamedQuery(name = "SummaryQuery", query="SELECT p.dId , p.hashedId ,p.lanCode , p.markCode, Address "
        + "FROM ProfileSummary p "
        + "LEFT JOIN FETCH Address Address ON Address.id.dId = p.dId "
        + "WHERE p.dId = :dId ")

此查询使用左连接从两个表中获取数据。因为它是一个自定义查询,所以 JPA 在 Object 数组中返回输出,而不是我期望的 POJO。下面是 SQL 结果集的映射。我不确定是否正在使用以下映射。

@SqlResultSetMapping(
        name = "SummaryQuery",
        classes = @ConstructorResult(
                targetClass = ProfileSummaryPojo.class,
                columns = {
                        @ColumnResult(name = "dId"),
                        @ColumnResult(name = "hashedId"),
                        @ColumnResult(name = "lanCode"),
                        @ColumnResult(name = "markCode")
                }
        )
    )

由于这是自定义查询和 oneToMany 映射,我只需要一个 DB HIT 而不是两个单独的查询。这就是我编写自定义查询的原因。现在的问题是它将结果集作为对象列表返回。如何在 POJO 中获取它。

提前致谢。

标签: javaspring-boothibernatespring-data-jpa

解决方案


推荐阅读