人
身份证 | 姓名 |
---|---|
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;
}
那是不可能的。 SQL 查询的结果始终是一张表。它的表内没有表。这就是为什么你不能将它直接映射到集合中。可以有解决办法,但不行,你不能直接这样做。
LISTAGG()
相当于MySQL中的GROUP_CONCAT()
。
这不会为您提供列表,而是会为您提供串联值,如 STRING
。
您选择如何处理此 STRING 值取决于您。