2011-05-13 62 views
4

我正在使用JBoss。我創建了一個簡單的JAX-RS Webservice,它從數據庫中檢索JPA Entitiy並將其返回給用戶。只要我有一個關係(@OneToOne)到另一個實體,我得到一個LazyInitializationException。原因很簡單:關係不是由JPA(懶加載)初始化的,當jaxb試圖序列化時,一切都會中斷。當通過Web服務返回JAXB對象時JPA LazyInitializationException

但我該如何解決這個問題?

我可以在返回對象之前觸摸關係。對於更大的對象網絡來說,這並不好也不復雜

我可以擴展我的持久性上下文,所以我的會話在jaxb序列化過程中仍然處於活動狀態。好主意,但如何?

是否有一種標準的最佳實踐方式來解決我的問題。

Laures

回答

0

你必須使用@XmlTransient註釋,以防止被序列化的關係。

+1

但我想序列化關係。但是,當jaxb試圖我得到一個異常。 – Laures 2011-05-13 10:22:24

+0

您不應該序列化延遲加載關係。一旦它被反序列化,你是如何使用它的? – 2011-05-13 10:29:48

+0

我不明白這個問題。該關係應該在其序列化之前加載,以便將其完整地序列化到xml中。至少這就是我想要的。 – Laures 2011-05-13 13:37:06

0

您可以更改關係註釋以熱切獲取對象。

@OneToOne(fetch=FetchType.EAGER)