Невозможно обновить текущую метку времени при обновлении базы данных - PullRequest
0 голосов
/ 11 февраля 2019

У меня есть таблица, в которой у меня есть поле даты, в котором по умолчанию установлено текущее время.Это прекрасно работает, когда я создаю строку на этой таблице.

Когда я обновляю эту строку, я ожидаю, что отметка времени будет автоматически обновлена, но она не обновляется.Ценю любые советы о том, что я делаю не так.

Это поле в моем классе сущностей.

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

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

Это запрос в моем интерфейсе репозитория.

// 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);

Приведенный выше запрос обновляет только заголовок и идентификатор, но не обновляет поле «Дата».Также попробовал следующее в классе Entity, который не имеет значения.

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

1 Ответ

0 голосов
/ 12 февраля 2019

Я подозревал, что это нормальное поведение, потому что @PreUpdate - это функция JPA / Hibernate.Когда вы просто используете Query, вы просто вызываете «обычный SQL», не проходя жизненный цикл объекта Hibernate.Я оглянулся и нашел подтверждение:

Здесь также был дан ответ: Spring Data JPA @PreUpdate не вызывается при обновлении с использованием @Query из репозитория

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...