提问人:duvo 提问时间:5/24/2016 最后编辑:sassy_rogduvo 更新时间:12/19/2021 访问量:2462
如何在 JPA 中使用 SqlResultSetMapping 将本机 sql 结果映射到 oneToMany 字段
How to map native sql results to oneToMany field with SqlResultSetMapping in JPA
问:
例如,假设我有以下数据库表
Building
-----------
id
name
和
Room
-----------
id
roomNo
buildingId
构建 Java 类将如下所示
@Entity
public class Building {
private int id;
@OneToMany private List<Room> rooms;
...
我有以下SQL来获取建筑物
SELECT b.id,
b.name,
r.id AS rid,
r.roomNo
FROM Building b
LEFT JOIN Room r ON
b.id = r.buildingId
结果将是
id, name, rid, roomNo
---------------------
1, 'b1', 10, 'r100'
1, 'b1', 11, 'r101'
2, 'b2', 12, 'r10'
请注意,由于一对多关系,存在重复的 Building。
我知道我可以通过使用 JPQL 来获取 Building 实体,但我想用本机 SQL 来做到这一点。那么,如何使用 JPA 的 @SqlResultSetMapping将上面的结果映射回 Building 类呢?
答:
0赞
Rostam Bamasi
12/19/2021
#1
如果要保留 Join 语句,可以使用以下代码:
SELECT DISTINCT
b.id,
b.name,
0 AS rid,
'' AS roomNo
FROM Building b
LEFT JOIN Room r ON
b.id = r.buildingId
评论