Boas,
Tenho os seguinte método de busca no banco de dados:
@Override
public List<Reserva> getAll() {
this.em.getTransaction().begin();
Query query = em.createQuery("select distinct r from Reserva r left join fetch r.estadia");
List<Reserva> lista = query.getResultList();
this.em.getTransaction().commit();
return lista;
}
E apartir dele parto para esse metodo:
NOTA: ContaCliente vem do codigo: reserva.getCliente().getConta();
public void debitarReserva(Pagamento pagamento, ContaCliente conta) {
Divida classeSemNome = new Divida(pagamento);
conta.getPagamentos().add(classeSemNome);
}
E recebo esse erro na ultima linha:
Exception in thread "AWT-EventQueue-0" org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: me.mauro.albamoura.model.ContaCliente.pagamentos, could not initialize proxy - no Session
Para tentar resolver a exception modifiquei o codigo para:
public void debitarReserva(Pagamento pagamento, ContaCliente conta) {
Divida classeSemNome = new Divida(pagamento);
EntityManager em = new JPAUtil().getEntityManager();
ContaClienteDao contaDao = new ContaClienteDao(em);
PagamentoDao pagamentoDao = new PagamentoDao(em);
pagamentoDao.adicionar(pagamento);
conta = contaDao.get(conta.getId());
conta.getPagamentos().add(classeSemNome);
em.close();
}
Existe uma maneira melhor de fazer isso?