Java Hibernate:空集合而不是延迟加载错误
我有一个由Hibernate加载的ORM实体,当我需要它们时会加载某些关联。该实体通过MQ传输到客户端应用程序(客户端是.NET,因此我使用MessagePack进行序列化/反序列化),当该实体由MsgPack序列化时,它尝试访问延迟加载的关联,但失败,因为会话已关闭。即使它没有失败,我也不希望它在某些情况下加载关联 有没有办法告诉hibernate用空值来填充惰性关联,而不是某些查询结果的代理,或者我必须迭代返回的列表并自己执行这些更改Java Hibernate:空集合而不是延迟加载错误,java,hibernate,serialization,lazy-loading,Java,Hibernate,Serialization,Lazy Loading,我有一个由Hibernate加载的ORM实体,当我需要它们时会加载某些关联。该实体通过MQ传输到客户端应用程序(客户端是.NET,因此我使用MessagePack进行序列化/反序列化),当该实体由MsgPack序列化时,它尝试访问延迟加载的关联,但失败,因为会话已关闭。即使它没有失败,我也不希望它在某些情况下加载关联 有没有办法告诉hibernate用空值来填充惰性关联,而不是某些查询结果的代理,或者我必须迭代返回的列表并自己执行这些更改 谢谢你的回答 我认为@Transient只适用于ORM。
谢谢你的回答 我认为@Transient只适用于ORM。如果不希望字段被序列化,则应使用关键字“transient”
私有瞬态列表myTransientList;
除了使用对象,通过MQ传输,您没有其他方法
传递一个数据传输对象而不是POJO-这样你可以控制你传递的内容。我真的很担心,这是唯一的选择。我试图尽可能地避免DTO…我相信最好的做法是在MQ中传输对象时使用DTO。不要序列化JPA注释对象。我曾经遇到过这样的困境,我相信DTO是最好的解决方案。顺便说一句,我不知道您是否在使用Spring,但如果您是,我建议您使用ConversionServiceFactoryBean,它可能会为您提供相当好的“开箱即用”转换服务解决方案
private transient List<Object> myTransientList;