我的第一个解决方案:
- 我一直在
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