Java Hibernate获取连接仍在触发选择

Java Hibernate获取连接仍在触发选择,java,oracle,hibernate,jpa,persistence,Java,Oracle,Hibernate,Jpa,Persistence,我有一个Hibernate父对象,其子对象为OneToOne关系: @OneToOne @Fetch(FetchMode.JOIN) @NotFound(action=NotFoundAction.IGNORE) @JoinColumns({ @JoinColumn(name="column_a", referencedColumnName="column_a", insertable = false, updatable = false), @JoinColumn(name="

我有一个Hibernate父对象,其子对象为OneToOne关系:

@OneToOne
@Fetch(FetchMode.JOIN)
@NotFound(action=NotFoundAction.IGNORE)
@JoinColumns({
    @JoinColumn(name="column_a", referencedColumnName="column_a", insertable = false, updatable = false),
    @JoinColumn(name="column_b", referencedColumnName="column_b", insertable = false, updatable = false),
    @JoinColumn(name="column_c", referencedColumnName="column_c", insertable = false, updatable = false)
   })
   public Child getChild()
   {
      return child;
   }
子项信息可能并不总是可用的。我希望始终返回父对象,如果相关信息可用,则初始化子对象

我尝试使用以下HQL检索父对象列表:

String queryString = "select parent from Parent parent"
                  + " left join fetch parent.child child "
                  + " where parent <.... meets criteria> "
EntityManager em = getEntityManager();
Query query = em.createQuery(queryString);
query.setParameter(<set parameters...>);
query.getResultList();
String queryString=“从父项中选择父项”
+“左联接获取父级.child子级”
+“其中父项”
EntityManager em=getEntityManager();
Query Query=em.createQuery(queryString);
query.setParameter();
getResultList();
当我查看此HQL生成的SQL时,它正在为原始SELECT之后的每个子级执行单独的SELECT


有人能告诉我为什么会发生这种情况吗?HQL查询中将FetchMode设置为JOIN,并显式设置为left JOIN fetch?

您的子类是否也有一些关联?? 请参考下面的链接,这可能会对您有所帮助