在此环境中处理交易的最佳方法是什么?
我有一个Transacao课程,里面有一系列Transacao。
public class Transacao {
@OneToMany(fetch = FetchType.LAZY, mappedBy = "pai")
private List<Transacao> filhos;
}
我从EJB中加载这个,如:
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中获取filhos。有没有更好的解决方案,哪个更好?
答案 0 :(得分:0)
fetch
的{{1}}默认值为@OneToMany
。
您可以将其FetchType.LAZY
设置为在非托管环境中使用它们。
或者您可以创建另一个EJB或方法来获取列表或只是大小。
FetchType.EAGER