在这种环境中处理事务的最佳方式是什么?
我有一个 Transacao 类,其中包含 Transacao 的集合。
public class Transacao {
@OneToMany(fetch = FetchType.LAZY, mappedBy = "pai")
private List<Transacao> filhos;
}
我从 EJB 将其加载到 JSF 中,例如:
public class TransacaoBean {
@EJB
private TransacaoService transacaoService;
private void edit(Long id) {
this.transacao = transacaoService.findById(id);
}
}
虽然,如果我想获得 filhos 的集合,我必须这样做:
public class TransacaoBean {
...
private void edit(Long id) {
this.transacao = transacaoService.findById(id);
log.info(this.transacao.getFilhos.size()); //this throws a LazyInitializationException
}
}
我得到一个例外。
将它加载到我的 JSF 中的最佳方法是什么?我正在考虑创建一个Filter
并使用USerTransaction
来保持对请求的事务打开或在我的 EJB 中获取文件。有没有更好的解决方案,哪个更好?