2

我正在开发一个客户端-服务器-应用程序,其中 Hibernate 作为持久层,Jersey REST 用于网络通信。

给定具有角色的用户:

  1. 当我想在客户端显示所有用户时,我不希望 Hibernate 加载角色,也不希望通过网络发送它们
  2. 当我想修改用户的角色时,我希望它们被加载并被转移

我正在使用预加载模式(http://bwinterberg.blogspot.com/2009/09/hibernate-preload-pattern.html)来确定 Hibernate 应该加载哪些属性。这工作正常。

在案例 1 中,Hibernate 没有加载任何角色,正如预期的那样。但是一旦 Jersey 创建了要发送到客户端的 XML,它就会读取用户的角色,这反过来让 Hibernate 加载角色(以及所有其他属性)。最后,Hibernate 总是加载属于用户的完整数据集树。

在将用户传递给 Jersey 之前,我曾考虑通过关闭会话来分离用户,因此 Hibernate 无法加载角色,但这似乎没有任何效果。

有任何想法吗?

4

1 回答 1

3
  • 对您的实体进行浅层克隆并为其设置一个空集合,然后再将其用于序列化

  • 制作代理集合的自定义代理,仅在某些情况下(第一个用例)委托加载,并在其他情况下返回空集合

于 2010-02-12T15:58:18.677 回答