Pessoal desculpe pelo título confuso, ficou difícil explicar o problema em poucas palavras.
Estou usando o eclipselink, JPA2.
Tenho um mapeamento A possui lista de B (lazy)
O que ocorre é:
Carrego A e itero por B, tudo ok.
Insiro um B (que faz parte do A).
Carrego A novamente e itero por B, o novo B não aparece, mesmo estando salvo no banco.
Para toda ação que realizo sempre desatacho a entidade e fecho o entityManager.
Sabe pq isso ocorre? O que eu percebi é que eu posso ou fazer uma query estilo “listAll”, só para forçar a atualização da persistiência, não preciso nem atribuir este listAll para uma variável. Se fizer isto e carregar A e iterar por B ele vem atualizado. Outra forma é marcar o relacionamento como Refresh e dar um refresh em A antes de iterar por B.
O que eu digamos não concordo é desatachar A, dar um close no entitManager, abrir um novo entityManager, carregar (find) A novamente e quando itero por B ele continua no seu estado anterior! Puta falta de sacanagem
Obs.: Só para constar, no eclipseLink quando itero os Bs que tem em um A, mesmo sendo lazy e o entityManager e Factory terem sidos fechados (close() ) ele carrega a lista de B ao iterar, bizarro.