我是新來的基於註釋的事務管理。我正在用Spring 3.1,Hibernate 3.2開發Web應用程序。 我有@Transactional的問題。 我要加載的將其具有的孩子的如下POJO: 父類是DealerMaster已設定DealerMember,所以我宣佈爲問題與fetchType.Lazy ...!
在DealerMaster :
@OneToMany(fetch = FetchType.LAZY,mappedBy = "dealerMaster")
@Cascade({ CascadeType.SAVE_UPDATE, CascadeType.DELETE_ORPHAN})
public Set<DealerMember> getDealerMembers() {
return this.dealerMembers;
}
和我用我的HibernateUtil類執行任何查詢,所以我使用的加載方法:
public static Object loadObject(Session paramSession, Object paramObject)
throws Exception
{
try
{
paramObject = paramSession.load(paramObject.getClass(), getId(paramObject));
}
catch (HibernateException localHibernateException)
{
setErrorMessage(paramObject, localHibernateException.getMessage());
localHibernateException.printStackTrace();
}
現在我的問題是我的load方法成功地運行在第但是當移動駿馬mObject它表明:
com.sun.jdi.InvocationException occurred invoking method.
並且所有值都在服務層訪問只有當我嘗試在控制器端訪問它拋出錯誤:
org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.lbt.model.DealerMaster.dealerMember, no session or session was closed
當我用Google搜索上同樣的問題,我發現,這與延遲加載有關,但我試圖lazy = false也fetchType.Eager但同樣的問題。
感謝這個關鍵信息,但我試圖加載父POJO使用懶惰fetchType子集,如上面提到的仍然得到invocationException。儘管如此,我仍然只能獲得服務類中的所有子記錄,而無法在控制器或jsp中獲得。有沒有任何配置或其他方式讓父母和孩子從服務中返回POJO? – Pravin
這很奇怪..如果你能夠獲得服務類中的所有子記錄,你怎麼沒有在控制器類中得到它。重新應用服務類的相同的策略用於獲取父對象控制器類也......告訴我你的服務一流的戰略,以獲得父對象.. – DarkHorse