使用条件构建器构造select以返回实体

时间:2013-12-05 12:30:44

标签: jpa eclipselink

使用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链接无法“构造”雇员对象,因为它不存在(它是一个左连接,所以在我的场景中它可能不存在)。

0 个答案:

没有答案