Hibernate @ManyToOne(fetch = FetchType.LAZY)被忽略

时间:2017-08-24 08:22:48

标签: java hibernate

我在Purchase上有一个懒惰的@ManyToOne列定义为:

@ManyToOne(fetch = FetchType.LAZY)
Sale sale = null

但是,当我从db加载实体时,它会被直接加载:

Purchase purchase = em.find(Purchase.class, id);
PersistenceUnitUtil unitUtil = em
        .getEntityManagerFactory()
        .getPersistenceUnitUtil();
System.err.println(unitUtil.isLoaded(purchase, "sale"));

即使尚未加载字段,也会返回true

我做错了什么?

(Hibernate 4.3.11.Final)

1 个答案:

答案 0 :(得分:2)

因为它是可以为空的字段。 Hibernate无法知道db中是否存在该值,因此必须查询db以将null或值赋值给该字段。