我有一個由Hibernate加載的ORM實體,當我需要它們時加載某些關聯LAZY。這個實體通過MQ傳輸到客戶端應用程序(客戶端是.NET,因此我使用MessagePack進行序列化/反序列化),當實體被MsgPack序列化時,它試圖訪問延遲加載的關聯,並失敗該會議已經結束。即使它沒有失敗,我也不希望它在某些情況下加載關聯。休眠:空收集而不是延遲加載錯誤
有沒有辦法告訴hibernate使用空值填充惰性關聯而不是代理對於某些查詢結果,還是必須迭代返回的列表並自行執行這些更改?
感謝您的回答!
我有一個由Hibernate加載的ORM實體,當我需要它們時加載某些關聯LAZY。這個實體通過MQ傳輸到客戶端應用程序(客戶端是.NET,因此我使用MessagePack進行序列化/反序列化),當實體被MsgPack序列化時,它試圖訪問延遲加載的關聯,並失敗該會議已經結束。即使它沒有失敗,我也不希望它在某些情況下加載關聯。休眠:空收集而不是延遲加載錯誤
有沒有辦法告訴hibernate使用空值填充惰性關聯而不是代理對於某些查詢結果,還是必須迭代返回的列表並自行執行這些更改?
感謝您的回答!
你有沒有別的辦法,只能採用DTO對象,通過對MQ轉院吧,
我真的很害怕,這是唯一的選擇。我儘量避免使用DTO ... – 2013-03-25 21:37:12
我相信最好的做法是使用DTO,同時在MQ中傳輸對象。不要序列化JPA帶註釋的對象。我在過去遇到過這樣的困境,並相信DTO是最好的解決方案。 – 2013-03-25 21:39:55
BTW,我不知道你是否使用了Spring或沒有,但如果你是我建議你使用ConversionServiceFactoryBean,它可能給你相當不錯的「開箱即用」的轉換服務解決方案 – 2013-03-25 22:36:08
我認爲@Transient僅適用於ORM。如果你不希望你的字段被序列化,你應該使用關鍵詞「transient」。從DB使用Hibernate
Serializable
DTO對象 private transient List<Object> myTransientList;
傳遞一個數據傳輸對象而不是POJO--這樣你可以控制你傳遞的東西。 – 2013-03-25 21:33:10