2012-05-18 94 views
0

我使用的是eclipse-link 2 &有3个实体: Parent,Child & ChildInfo。 家长有孩子的情况。 孩子有1to1到ChildInfo。jpa左加入eclipse-link

  1. 我想如果父母一方所有的孩子在一个呼叫 对象“选择从父P LEFT JOIN取P.children其中P.id =:ID” 这样只会让结果当P具有至少1名儿童(我认为这是一个左外连接)

  2. 我想也是所有孩子&财物childinfos有1个呼叫 作为JPA犯规支持导航p.children.childinfo,有没有什么办法来实现这一目标?使用提示(QueryHints.FETCH,“P.children.info”)不是一个好的选择,就好像我有超过1000个孩子那里将会有超过1千个SQL查询被触发以获取孩子信息。我也不想提供Child.childinfo eager-fetch选项,而只是在查询级别。

感谢名单了很多

回答

0

第一个查询(一次固定)一定要返回父及其子,即使没有任何:

select p from Parent p left join fetch p.children where p.id = :id 

去取childInfos,你需要给孩子分配一个别名:

select p from Parent p 
left join fetch p.children child 
left join fetch child.childInfo 
where p.id = :id 

我没有具体的EclipseLink经验,但成功h查询在Hibernate中绝对有效,并且是AFAIK,有效的JPQL。所以它应该在EclipseLink中工作。