使用JPQL我可以写一些类似的东西:
select p.name, p.surname, e from Person p, Employee e
以这种方式完成笛卡尔积,并返回完整的雇员实体。
使用左连接:
SELECT p.name, p.surname, e FROM Person p LEFT JOIN p.employees e
我想使用条件构建器api创建第二个查询。 我怎么能这样做?
更新: 使用标准,我可以这样做:
Join join = root.join("employees", JoinType.LEFT);
CompoundSelection select = cb.array(
root.get("name"),
root.get("surname"),
join)
但是使用这个查询我得到了错误:
javax.persistence.PersistenceException: Exception [EclipseLink-6044] (Eclipse
Persistence Services - 2.5.1.v20130918-f2b9fc5):
org.eclipse.persistence.exceptions.QueryException Exception Description: The primary key
read from the row [DatabaseRecord(EMPLOYEE.NUMBER => null
EMPLOYEE.ADDRESS => null)] during the execution of the query was detected to be
null.
Primary keys must not contain null.
因为eclipse链接无法“构造”雇员对象,因为它不存在(它是一个左连接,所以在我的场景中它可能不存在)。