![](/img/trans.png)
[英]JSF + Hyperjaxb3 + Hibernate LazyInitializationException accross requests
[英]hibernate: LazyInitializationException using netbeans and JSF
我正在使用netbeans 7.1,glassfish 3.1.1和hibernate 4.01我正在使用netbeans生成的JSF文件-Facade.java-Controller.java和我自己的實體bean
在我的baseTicket實體中,我映射了以下內容
@OneToMany(mappedBy = "baseTicket", cascade = javax.persistence.CascadeType.ALL)
@Fetch(value = FetchMode.SUBSELECT)
java.util.List<CustomAttribute> customAttributes;
如果添加fetch=EAGER
批注,則可以從JSF網頁訪問customAttributes。 但是,如果我將其保留為延遲加載,則會得到
hibernate: LazyInitializationException
我已經在網上搜索並嘗試了許多建議-但我無法使它正常工作。 我曾嘗試創建一個實體管理器,但似乎無法成功創建em。
最好的解決方案是什么?
如果您不想急於加載它,可以編寫一個命名查詢以獲取DAO層中的列表。
注釋樣式:
@NamedQueries({
@NamedQuery(
name = "findCustomAttributes",
query = "from CustomAttribute ca where ca.ticket = :ticketId"
)
})
在這里,我假設CustomAttribute中有到票證( @ManyToOne
)實體的鏈接。
在代碼中,您可以將結果提取為
Query query=em.createNamedQuery("findCustomAttributes");
query.setParameter("ticketId", 1);
List CustomAttributesList=query.getResultList();
您可以根據需要使用此列表,僅需要知道當前的票證ID。
您可以從中獲得更多信息
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.