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
您只需遍历所有人员并将所有条目推送到新集合 –