JPA refresh na entidade!

6 respostas
B

Ola, estou usando a annotation @OneToMany, da entidade curso, q pega seus alunos.

Se eu faço:

curso.getAlunos();

Ele retorna a lista dos alunos pra mim.
Mas se logo apos eu faço:

curso.getAlunos();

alunoDAO.adicionaAluno(aluno);

curso.getAlunos();

A lista q eh pegada apos a insercao do aluno, nao contem este aluno! Ai eu tenho q usar:

entityManager.refresh(curso);

Tem alguma maneira de ele dar refresh automatico quando acontece isso?
Vlw!

6 Respostas

nbluis

Já tentou adicionar o objeto da lista ao inves do DAO ?

nbluis

Talvez não seja a melhor maneira de fazer, mas deve funcionar.

Paulo_Silveira

a sua implementacao de jpa esta certa! isso aconteceu porque ele ja inicializou a colecao quando voce fez a primeira invocacao a getAlunos!

Ai, na segunda vez que voce chama, ele puxa tudo do relacionamento que ja foi fetch e do first level cache!

Voce vai precisar fazer um refresh no curso mesmo, ou entao puxa-lo de um outro entitymanager.

Voce realmente esta precisando fazer isso na mesmissima requisicao web?

B

Mas o EntityManager so uso para dar o persist na entidade, dai teria q abrir outro e pegar o objeto denovo?
Vou tentar adicionar o objeto na lista xD

Paulo_Silveira

brunoja:
Mas o EntityManager so uso para dar o persist na entidade, dai teria q abrir outro e pegar o objeto denovo?
Vou tentar adicionar o objeto na lista xD

essa solucao vai gerar codigo estranho, mas pode ser

lembre que tambem esta estranho voce fazer essas duas coisas na mesma requisicao, nao?

paulovittor23

Paulo Silveira:
a sua implementacao de jpa esta certa! isso aconteceu porque ele ja inicializou a colecao quando voce fez a primeira invocacao a getAlunos!

Ai, na segunda vez que voce chama, ele puxa tudo do relacionamento que ja foi fetch e do first level cache!

Voce vai precisar fazer um refresh no curso mesmo, ou entao puxa-lo de um outro entitymanager.

Voce realmente esta precisando fazer isso na mesmissima requisicao web?

Paulo, e apenas a título de curiosidade, há como fazer com que toda vez que eu chame o get de uma coleção o hibernate ir ao banco?

Criado 1 de fevereiro de 2008
Ultima resposta 1 de fev. de 2008
Respostas 6
Participantes 4