有人可以解释一下在JPA和休眠状态下PersistenceUtil.isLoaded返回什么。
我的印象是,它标识是否已加载该值,并且可以在不访问数据库的情况下对其进行访问。但是最近我遇到了一个案例,即PesistenceUtil.isLoaded返回true,而该对象是HibernateProxy的实例,对该对象的任何访问都将引发LIE。
我将不胜感激。
最佳答案
PersistenceUtil中的方法isLoaded检查是否已加载实体。实体加载意味着所有渴望的属性都从数据库加载或由应用程序分配。在JPA 2.0规范中,这是用以下单词来告知的:
如果所有属性都具有
FetchType.EAGER(无论是明确指定还是默认设置)(包括
关系和其他具有集合值的属性)
从数据库或由应用程序分配。具有的属性
FetchType.LAZY可能已加载,也可能未加载。
有关详细说明,请参阅JPA 2.0规范3.2.9加载状态。