簡體   English   中英

如何使用 JPA 中的 SqlResultSetMapping 將本機 sql 結果映射到 oneToMany 字段

[英]How to map native sql results to oneToMany field with SqlResultSetMapping in JPA

例如,假設我有以下數據庫表

Building
-----------
id
name

Room
-----------
id
roomNo
buildingId

Building 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 類?

如果要保留 Join 語句,可以使用此代碼:

SELECT DISTINCT
         b.id,
         b.name,
         0 AS rid,
         '' AS roomNo 

FROM     Building b
  LEFT JOIN Room r ON
         b.id = r.buildingId

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM