Não é possível atualizar carimbo de tempo atual sobre atualizações de banco de dados

o quê:

Eu tenho uma tabela onde eu tenho um campo de data que tem um valor padrão de timestamp atual. Esta multa funciona quando eu criar uma linha nessa tabela.

Quando eu atualizar essa linha, eu espero que timestamp para ser automaticamente atualizado, mas ele não está sendo atualizado. Aprecio qualquer conselhos sobre o que estou fazendo de errado.

Este é o campo na minha classe Entity.

// Date is of type import java.util.Date;

@UpdateTimestamp // expecting this to do the auto update. 
@Temporal(TemporalType.TIMESTAMP)
private Date updatedAt; 

Esta é a consulta na minha interface Repository.

// I don't intend to pass in current timestamp as a 3rd param for updateAt field. I expect it to just auto update to current time stamp.
@Modifying
@Query("update table as t set t.title =?1 where t.Id = ?2")
void update(String title, long id);

A consulta acima atualiza apenas título e ID, mas não o campo Data updatedAt. Também tentei o seguinte sob a classe de entidade que não faz diferença.

@PreUpdate
protected void onUpdate(){
    updatedAt = new Date();
}
Hermann Steidel:

Eu suspeitava que este é um comportamento normal, porque @PreUpdate é uma característica JPA / Hibernate. Quando você usar apenas uma consulta, você está apenas invocando "SQL simples" não passando por ciclo de vida entidade Hibernate. Olhei em volta e encontrou alguma confirmação:

Esta foi respondida aqui também: Primavera de dados JPA @PreUpdate não é chamado quando a atualização usando @query de Repositório

Acho que você gosta

Origin http://43.154.161.224:23101/article/api/json?id=219722&siteId=1
Recomendado
Clasificación