当前位置: 首页 > 知识库问答 >
问题:

jpa左联接eclipse-link

孙元明
2023-03-14

>

  • 我想在一次调用“Select P from Parent left join fetch P.children where P.id=:id”中获得一个包含所有子对象的父对象(我认为它是一个left outer join)。这只会在P至少有一个子对象时才会产生结果

    我想也有所有的儿童和财产childinfos与1调用,因为jpa不支持导航p.children.childinfo,有没有办法实现这一点?使用提示(queryhints.fetch,“p.children.info”)不是一个好的选择,因为如果我有1000多个子级,那么将有1000多个SQL查询被激发以获取子级信息。我也不想给child.childinfo Eage-Fetch选项,而只是在查询级别。

    太多了

  • 共有1个答案

    时仰岳
    2023-03-14

    第一个查询(一旦固定)应该肯定返回父级和它的子级,即使它没有任何:

    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中肯定可以工作,并且是有效的JPQL。所以它应该可以在EclipseLink中工作。

     类似资料:
    • 问题内容: 这是我的namedquery: @NamedQuery(name =“ User.findOneWithLists”,查询=“从用户u中选择u” +“左联接FEACH u.aTemplates” +“左联接FE.bTemplates” +“左联接FE.bp” +“左JOIN FETCH u.aCredentials“ +” LEFT JOIN FETCH u.st(st.deleted

    • 我有两个表,一个用于聚会,一个用于记分卡模板映射。记分卡模板映射表有一个返回到party(on id)的外键。我想找到一个有记分卡模板映射细节的所有各方的列表。

    • 我想它不干净...有没有人知道如何在不使用SQL符号的情况下使它变得简单?

    • 我使用了spring data,jpa和querydsl,并学习了如何编写简单、漂亮的查询以左联接两个表。假设我有一个Project实体和一个Task实体,在Project中定义了OneToMany关系,我想做如下操作: 在JPQL中,应为: 我有一个ProjectRepository接口,它扩展了JPararePository和QuerydsLPredicateExecutor。使我能够访问方法

    • 如何在JPA中使用相同的表执行左外部联接?当我试着这样做的时候: 我得到错误:“意外标记:在第1行附近,第122列[从com.homersoft.wh.db.entity.radius.radacct e1中选择e1在e1.username=e2.username和e1.radacctID ?1]”

    • 汽车实体 保留实体 非常感谢你的帮助。