3

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

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

感谢您的回答!

4

2 回答 2

2

你别无他法,只能使用DTO对象,通过MQ传输,

  1. 使用休眠从数据库加载实体
  2. 将其转换为实现Serializable.
  3. 使用 MQ 将其​​传输给消费者
  4. 将其转换为另一侧的任何其他实体。
于 2013-03-25T21:34:00.027 回答
0

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

private transient List<Object> myTransientList;
于 2013-03-25T21:32:57.407 回答