Dúvida Básica - Construtor Entidade

2 respostas
T

Boa tarde !

Tenho as seguintes entidades:

Status: onde idStatus é o @ID e consequentemente Primary Key da tabela.
Pessoa: onde tem um relacionamento OneToOne com Status

A dúvida é o seguinte, se eu executar o seguinte código (onde o construtor seta o id correspondente):

Status statusAceito = new Status(1);
pessoa.setStatus(statusAceito );
pessoaFacade.update(pessoa);

Pelo que eu entendia, a entidade seria carregada se já existisse uma entidade com ID = 1, porém isso não está acontecendo.
Ele está tentando gravar um novo status.
Alguém saberia me dizer o pq isso pode estar acontecendo?
Como fazer para que isso não aconteça?

Detalhe: antes o mesmo código com TopLink isso não acontecia.

Agradeço a quem puder me ajudar.

2 Respostas

aluisiodsv

Vc não pode dar um new no status. Precisa dar um load se quiser atualizar.
Tipo:

Status statusAceito = statusFacade.load(1);
pessoa.setStatus(statusAceito);
pessoaFacade.update(pessoa);

Não sei bem como vc quer fazer isso.
Mas o código acima te deu alguma luz?

T

Pois é eu tbm tenho este conceito que se tem que dar um load.

O problema é que em algumas aplicações que estou dando manutenção, e que se usa Toplink, setando apenas o id me parece que o Toplink dá um load automático, pois a maneira de apenas setar o id funciona.

Acontece que troquei o TopLink para o EclipseLink e isso parou de funcionar em partes, em alguns casos funciona em outros não, e eu não entendo a lógica disso.

Criado 14 de outubro de 2010
Ultima resposta 15 de out. de 2010
Respostas 2
Participantes 2