我的第一個解決方案:
- 我一直在
entity.getElements()
- 延遲加載添加一個新的瞬態梅索德,取指從DOA中的元素,讓叫它
getElementsFromBd()
- 執行映射
getElementsFromBd()
在EntityProxy
- 在我的發言人中,我稱爲
getElementsFromBd()
而不是getElementsFromBd()
演示
contextA.getEntityById(id).with("elementsFromDb").fire(new Receiver<EntityBaseProxy>() {
@Override
public void onSuccess(EntityBaseProxy entity) {
System.out.println(entity.getElementsFromBd().size());
}
});
實體模型
...
@Transient
public List<Element> getElementsFromDb(){
doa.getElementsFromDb(this.id);
}
...
謝謝大家
編輯
我結束了使用擴展RequestFactoryServlet一個servlet,我開始並提交交易
public class CustomRequestFactoryServlet extends RequestFactoryServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Transaction tx = null;
try {
Session session = HibernateUtil.getCurrentSession();
tx = session.beginTransaction();
super.service(request, response);
session.getTransaction().commit();
} finally {
if (tx != null && tx.isActive()) {
tx.rollback();
}
}
}
}
BTW,當我用渴望fetshing,它的工作原理。所以我懷疑服務的實現是問題的來源 – outellou 2012-03-22 13:55:28
嗯,也許你的Hibernate會話在RF servlet收集數據時已經關閉了?你可以看看Spring的OpenSessionInViewFilter,尋找可能的解決方案。 – StefanR 2012-03-22 14:17:54