Gostaria de saber como é possível atualizar a lista do relacionamento bidirecional, sem que haja a necessidade ade abrir uma nova conexão EntityManager.
Por exemplo:
public class TesteList {
public static void main(String[] args) {
EntityManager manager = new JPAUtil().getEntityManager();
manager.getTransaction().begin();
Query query = manager
.createQuery("select c from Conta c join fetch c.movimentacoes where c.id = :pId");
query.setParameter("pId", 1);
Conta conta = (Conta) query.getSingleResult();
System.out.println("1 QTDE Movimentações: " + conta.getMovimentacoes().size()); //QUANTIDADE DE MOVIMENTAÇÕES ANTES DA NOVA MOVIMENTAÇÃO
Movimentacao novaMovimentacao = new Movimentacao();
novaMovimentacao.setData(Calendar.getInstance());
novaMovimentacao.setDescricao("Conta de luz - ABRIL/2012");
novaMovimentacao.setValor(new BigDecimal("135"));
novaMovimentacao.setTipoMovimentacao(TipoMovimentacao.SAIDA);
novaMovimentacao.setConta(conta);
manager.persist(novaMovimentacao);
manager.getTransaction().commit();
conta = new Conta();
query = manager
.createQuery("select c from Conta c join fetch c.movimentacoes where c.id = :pId");
query.setParameter("pId", 1);
conta = (Conta) query.getSingleResult();
System.out.println("2 QTDE Movimentações: "+ conta.getMovimentacoes().size()); //QUANTIDADE DE MOVIMENTAÇÕES NÃO ATUALIZA
manager.close();
}
}
No segundo syso : a QUANTIDADE DE MOVIMENTAÇÕES NÃO ATUALIZA
System.out.println("2 QTDE Movimentações: "+ conta.getMovimentacoes().size());