1
好日子大家,HQL:將左,右加入
我目前用下面的SQL轉換爲HQL struggeling:
SELECT
e.ID,
p.ID,
i.ID
FROM
ENTRY e
JOIN PERSON p ON e.FK_PERSON = p.ID
RIGHT JOIN IDENTITY i ON i.FK_PERSON = p.ID
WHERE
i.IS_MAIN_IDENTITY = 1
;
數據庫的結構方式是:
- 一個人可能有一個或多個身份
- 一個人有一個主要身份。主要的身份是IS_MAIN_IDENTITY身份設置爲1(真)
- 一個人可以具有零個或多個條目
此查詢的目的是要建立一個屏幕集合應顯示所有條目,它們的主人(人),他們的主要身份(因爲只有身份包含一個人的名字,等等)
我嘗試迄今在HQL執行此查詢是:
select
entr,
pers,
iden
from
MEntry entr
join entr.entrPerson pers
right join iden.idenPerson
但是這給了我下面的異常:
java.lang.IllegalStateException: No data type for node:
org.hibernate.hql.internal.ast.tree.IdentNode
\-[IDENT] IdentNode: 'iden' {originalText=iden}
我在做什麼錯在這裏?還是有更好的方法來編寫這個查詢?
非常感謝您提前預約。
這將是科西嘉的想法。但是,你將如何迭代**所有**條目?這聽起來像我不得不做額外的步驟來建立一個條目列表。或者我錯過了什麼? – rGunti
您只需遍歷所有人員並將所有條目推送到新集合 –