Hibernate @当通过join fetch获取带有@OneToOne的实体时,OneToOne被急切地获取

Hibernate @当通过join fetch获取带有@OneToOne的实体时,OneToOne被急切地获取,hibernate,jpa,Hibernate,Jpa,我有以下三门课: public class Object { ...whatever } public class CustomerObject { @OneToOne(optional = false, fetch = FetchType.LAZY) @JoinColumn(name = "OBJECT_ID", referencedColumnName = "OBJECT_ID", insertable = false, updatable = false)

我有以下三门课:

public class Object {
    ...whatever
}

public class CustomerObject {

    @OneToOne(optional = false, fetch = FetchType.LAZY)
    @JoinColumn(name = "OBJECT_ID", referencedColumnName = "OBJECT_ID", insertable = false, updatable = false)  
    private Object object;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "CUSTOMER_TYPE_ID", referencedColumnName = "OBJECT_ID", insertable = false, updatable = false)
    private CustomerTypeObject customerTypeObject;

}

public class CustomerTypeObject {

    @JoinColumn(name = "OBJECT_ID", referencedColumnName = "OBJECT_ID", insertable = false, updatable = false)
    @OneToOne(optional = false, fetch = FetchType.LAZY)
    private Object object;

}
当我这样做时:

entityManager.createQuery(
"select cust from CustomerObject cust "
+ "left join fetch cust.customerTypeObject customerType "
+ "where cust.id = :customer_id 
, CustomerObject.class)
.setParameter("customer_id", BigDecimal.valueOf(1))
.getSingleResult();
Hibernate发出1个查询以获取customer及其customerType,但同时发出查询以获取CustomerTypeObject实体中的对象关联。通过连接获取该关联来解决问题(即仅发出一个查询):

entityManager.createQuery(
"select cust from CustomerObject cust "
+ "left join fetch cust.customerTypeObject customerType "
+ "left join fetch customerType.object customerTypeObject "
+ "where cust.id = :customer_id 
, CustomerObject.class)
.setParameter("customer_id", BigDecimal.valueOf(1))
.getSingleResult();

但我不想这么做。没有办法做到这一点吗?(也就是说,不要急于获取一个实体中的OneToOne关联,因为该实体已经在查询中被加入获取)。

你知道这篇博文吗?我刚读过,但它根本没有回答我的问题。我想我写的问题很清楚。