Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Hibernate:空集合而不是延迟加载错误_Java_Hibernate_Serialization_Lazy Loading - Fatal编程技术网

Java Hibernate:空集合而不是延迟加载错误

Java Hibernate:空集合而不是延迟加载错误,java,hibernate,serialization,lazy-loading,Java,Hibernate,Serialization,Lazy Loading,我有一个由Hibernate加载的ORM实体,当我需要它们时会加载某些关联。该实体通过MQ传输到客户端应用程序(客户端是.NET,因此我使用MessagePack进行序列化/反序列化),当该实体由MsgPack序列化时,它尝试访问延迟加载的关联,但失败,因为会话已关闭。即使它没有失败,我也不希望它在某些情况下加载关联 有没有办法告诉hibernate用空值来填充惰性关联,而不是某些查询结果的代理,或者我必须迭代返回的列表并自己执行这些更改 谢谢你的回答 我认为@Transient只适用于ORM。

我有一个由Hibernate加载的ORM实体,当我需要它们时会加载某些关联。该实体通过MQ传输到客户端应用程序(客户端是.NET,因此我使用MessagePack进行序列化/反序列化),当该实体由MsgPack序列化时,它尝试访问延迟加载的关联,但失败,因为会话已关闭。即使它没有失败,我也不希望它在某些情况下加载关联

有没有办法告诉hibernate用空值来填充惰性关联,而不是某些查询结果的代理,或者我必须迭代返回的列表并自己执行这些更改


谢谢你的回答

我认为@Transient只适用于ORM。如果不希望字段被序列化,则应使用关键字“transient”

私有瞬态列表myTransientList;

除了使用对象,通过MQ传输,您没有其他方法

  • 使用hibernate从数据库加载实体
  • 将其转换为DTO对象,以实现可序列化的
  • 使用MQ将其传输给消费者
  • 将其转换为另一侧的任何其他实体

  • 传递一个数据传输对象而不是POJO-这样你可以控制你传递的内容。我真的很担心,这是唯一的选择。我试图尽可能地避免DTO…我相信最好的做法是在MQ中传输对象时使用DTO。不要序列化JPA注释对象。我曾经遇到过这样的困境,我相信DTO是最好的解决方案。顺便说一句,我不知道您是否在使用Spring,但如果您是,我建议您使用ConversionServiceFactoryBean,它可能会为您提供相当好的“开箱即用”转换服务解决方案
    private transient List<Object> myTransientList;