使用@SqlResultSetMapping映射到列表

问题描述 投票:0回答:1

身份证 姓名
1 路易斯
2 弗兰克

地址

人员 ID 地址 城市
1 萨曼莎路 x
1 富兰克林 y

在我的 Hibernate 本机查询中,我想将一个人的结果映射到一组地址,例如下面的查询。

SELECT ID, LISTAGG(Address, ','), LISTAGG(City, ',') 
FROM PERSON
JOIN Address ON ID = Person-ID
WHERE ID= 1
GROUP BY ID

我不知道如何实现SqlResultSetMapping

@SqlResultSetMapping(name = "Result",
        entities = { @EntityResult(entityClass = Person.class,
                fields = { @FieldResult(name = "id", column = "ID"),
                          {adresses but how...} }) })

public class Result{
    @Id
    int rowNumber;
    private List<Address> adresses;
}
java sql hibernate hibernate-mapping
1个回答
0
投票

那是不可能的。 SQL 查询的结果始终是一张表。它的表内没有表。这就是为什么你不能将它直接映射到集合中。可以有解决办法,但不行,你不能直接这样做。

LISTAGG()
相当于MySQL中的
GROUP_CONCAT()
。 这不会为您提供列表,而是会为您提供串联值,如
STRING
。 您选择如何处理此 STRING 值取决于您。

© www.soinside.com 2019 - 2024. All rights reserved.