Hibernate:空集合而不是Lazy-load错误

时间:2013-03-25 21:26:00

标签: java hibernate serialization lazy-loading

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

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

感谢您的回答!

2 个答案:

答案 0 :(得分:2)

你没有别的办法,只能使用DTO个对象,通过MQ转移它,

  1. 使用hibernate
  2. 从DB加载实体
  3. 将其转换为实现Serializable
  4. 的DTO对象
  5. 使用MQ
  6. 将其转移给消费者
  7. 将其转换为另一方的任何其他实体。

答案 1 :(得分:0)

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

private transient List<Object> myTransientList;