1

有人可以解释一下 PersistenceUtil.isLoaded 在 JPA 和休眠的上下文中返回什么。我的印象是它可以识别该值是否已加载并且可以在没有数据库访问权限的情况下访问。但是最近我遇到了一个案例,即 PesistenceUtil.isLoaded 返回 true,而该对象是 HibernateProxy 的一个实例,对它的任何访问都会引发 LIE。我将不胜感激任何评论。

4

1 回答 1

2

PersistenceUtil 中的方法 isLoaded 检查是否已加载实体。正在加载的实体意味着所有急切的属性都是从数据库加载或由应用程序分配的。在 JPA 2.0 规范中,这是用以下词语来说明的:

如果具有 FetchType.EAGER 的所有属性(无论是明确指定还是默认情况下)(包括关系和其他集合值属性)都已从数据库加载或由应用程序分配,则认为已加载实体。带有 FetchType.LAZY 的属性可能已加载,也可能未加载。

详细解释请参考JPA 2.0 规范,3.2.9 加载状态

于 2012-11-25T18:35:37.463 回答