Каков наилучший способ обработки транзакций в этой среде?Сделка с использованием JSF2, EJB3, JPA2
У меня есть класс Transacao, в котором есть коллекция Transacao.
public class Transacao {
@OneToMany(fetch = FetchType.LAZY, mappedBy = "pai")
private List<Transacao> filhos;
}
загружаю это в JSF из 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
, чтобы сохранить транзакцию открытой для запроса или выбрать filhos в моем EJB. Есть ли лучшее решение для этого, какой из них лучше?