讓我們說我正在嘗試使用一個寧靜的界面列出所有產品。JAX-RS:我如何有選擇地在Restful調用中選擇xml輸出?
@XmlRootElement
public class Product implements Serializable {
//products attributes defined here
@OneToMany(cascade = CascadeType.ALL, fetch=FetchType.LAZY, mappedBy="product")
private Set<ProductUser> productUsers= new HashSet<ProductUser>();
}
當我嘗試調用find.All的產品,它試圖獲取甚至ProductUsers並拋出一個異常
org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role, productUsers, no session or session was closed
我不想包括產品的用戶在我休息的xml輸出。我如何有選擇地選擇包含在xml中的內容?
我正在使用REST-Easy,JBoss AS7,JPA和Hibernate作爲實現。我的EJB 3.1方法公開爲Restful服務。
感謝您的幫助!
亞歷克斯,這種方法是有道理的。我會嘗試。但是,如果我的前端想要使用JPA實體(以使用驗證器),我最終將在我的EJB上創建兩個獨立的方法用於前端使用,另一個用於公開作爲Restful方法。是否有任何其他優雅的方式來選擇JPA實體的哪些集合在服務調用中公開? – 2012-03-07 00:49:00
Alex,如果我分離上面的JpaProduct並調用product.setProductUsers(null),與您建議的內容(創建單獨的JaxbProduct)相比,您是否認爲有任何缺點? – 2012-03-07 01:12:40
@Veer當你說'前端'時,你是什麼意思?你可以請你勾畫你的建築堆棧。 – 2012-03-09 09:17:16