JPA - Como pegar se houve um realmente um update ou não numa operação de merge

1 resposta
orogerio

Olá pessoal !

Estou usando JPA1.0 e Toplink.

Tenho uma classe aqui com vários campos (uns 40) que persiste em uma tabela, e tenho uma aplicação com um formulário para editar esses 40 campos.

No momento que eu clico numa opção desse formulário, é chamado um método para salvar as informações:

Se algum desses 40 campos foi alterado, o jpa faz update somente neste campo, isso é o certo. Por exemplo, alterei o valor do campo1 e do campo30, os outros eu não alterei. Então o JPA faz:

[TopLink Fine]: 2011.03.16 10:04:04.995--ClientSession(1143493)--Connection(26120125)--Thread(Thread[http-80-2,5,main])--UPDATE tabela SET campo1 = ?, campo30 = ? WHERE (id = ?)
        bind => [10, 30, 75]

Se eu não altero nenhum campo, então nenhum Update é feito. Até aqui tudo bem !

:?: :?:
Minha dúvida é: Como eu pego se houve um update ou não ?
Pq o que eu preciso fazer é setar um campo de status “alterado” caso um dos 40 campos foi alterado. (eu não quero fazer um monte de ifs)

Agradeço a atenção

1 Resposta

orogerio

Só para ficar registrado caso alguém precise.

Não consegui resolver pelo JPA, então a melhor alternativa foi fazer uma trigger after update direto no banco de dados (resolveu meu problema pois só uso um BD). :idea:

Caso alguém saiba fazer pelo JPA, registre aqui para futuras consultas.

Até mais
Rogério

Criado 16 de março de 2011
Ultima resposta 17 de mar. de 2011
Respostas 1
Participantes 1