2014-02-17 97 views
0

懶洋洋地初始化角色的集合,我想這個代碼未能在休息web服務

@GET 
@Produces("application/xml") 
public Customer getMsg() { 
    Customer cus = em.find(Customer.class,1); 
    return cus; 
} 

Customer類具有一個與地址實體一對多的關係。 但當我試圖從我的ajax客戶端調用ws它給我這個錯誤?如何解決這個問題。 應用程序在jboss-eap-6.2上運行並且該類是無狀態bean。

JBWEB000065: HTTP Status 500 - org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: org.test.Customer.addresslist, could not initialize proxy - no Session 

回答

0

您可以更改fetchType到迫切,需要檢索的地址,而實體仍連接,這意味着你需要在你回來之前,你有方法來檢索它。如果你正在使用JPA 2.1,那麼你也許可以用一個實體圖形

+0

當我使用eager方法它給我javax.xml.bind.MarshalException - 與鏈接的異常。 我不想要custmers的地址。只有我想要檢索客戶實體。 – Dilis

0

考慮地址字段適用@XmlTransient,那你得到的錯誤是因爲FO實體狀態不是管理作爲您的交易外因爲當Marshall使用訪問器方法時,你的屬性是LAZY,它會嘗試加載地址,並且當你在事務之外發生錯誤時,請考慮和@XmlTransient以避免marshall嘗試使用Address。

public class Customer 

@XmlTransient 
public Address addresslist 

應用,它的使用JAXB,如果不考慮搜索類似避免馬歇爾在實體領域的一些東西。