Java 休眠延迟加载+;Jersey REST=快速加载?

Java 休眠延迟加载+;Jersey REST=快速加载?,java,hibernate,orm,rest,jersey,Java,Hibernate,Orm,Rest,Jersey,我正在开发一个客户机-服务器应用程序,其中Hibernate作为持久层,Jersey REST用于网络通信 给定具有以下角色的用户: 当我想显示客户端中的所有用户时,我不希望角色由Hibernate加载,也不希望它们通过网络发送 当我想修改用户的角色时,我想加载并转移它们 我使用预加载模式()来确定Hibernate应该加载哪些属性。这个很好用 在案例1中,Hibernate没有加载任何角色,正如预期的那样。但是一旦Jersey创建了要发送给客户机的XML,它就会读取用户的角色,从而让Hiber

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

给定具有以下角色的用户:

  • 当我想显示客户端中的所有用户时,我不希望角色由Hibernate加载,也不希望它们通过网络发送
  • 当我想修改用户的角色时,我想加载并转移它们
  • 我使用预加载模式()来确定Hibernate应该加载哪些属性。这个很好用

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

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

    有什么想法吗?

    • 创建实体的浅层克隆,并为其设置一个空集合,然后将其用于序列化

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


    谢谢!我想在周一试试。好吧,我试着做一个浅显的拷贝,然后设置一个空的集合。效果很好。但它在没有副本的情况下也可以工作,因为幸运的是更改没有提交到数据库。现在,我将空集合直接设置为数据库中的实体。谢谢你的提示!