jpa离开加入eclipse-link

时间:2012-05-18 07:53:54

标签: jpa join eclipselink

我正在使用eclipse-link 2&有3个实体: 父母,儿童和儿童信息。 父母对孩子有好处。 Child对于ChildInfo有1to1。

  1. 我希望在一次通话中获得所有子对象的父级 “从父选择P左连接获取P.children,其中P.id =:id” 这只会在P至少有一个孩子的时候给出结果(我认为这是一个左外连接)

  2. 我想要所有的孩子和...所有物品childinfos有1个电话 由于jpa不支持导航p.children.childinfo,有什么办法可以实现吗?使用提示(QueryHints.FETCH,“P.children.info”)不是一个好的选择,好像我有超过1000个孩子那里将有超过1千个SQL查询被触发以获取子信息。我也不想给Child.childinfo eager-fetch选项,而只是在查询级别。

  3. thanx很多

1 个答案:

答案 0 :(得分: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的具体经验,但这样的查询肯定适用于Hibernate,而AFAIK是有效的JPQL。所以它应该在EclipseLink中工作。