@PreUpdate и @Prepersist в спящем /JPA (с использованием сеанса)

Я ударил блокатора, добавив исправление существующего проекта. Основная проблема заключается в том, что я хочу использовать @Prepersist и @PreUpdate в POJO, чтобы позаботиться о поле LastModified (вставить и обновление) с использованием спящего режима JPA с сеансом.

Причина?: Это изменение необходимо, потому что есть необходимость использовать liquibase 1.9.5, и я знаю (поскольку я столкнулся с этим раньше), что linibase переводит временную метку, связанную с datetime, с по умолчанию current_timestamp, и это слишком плохо для базы данных mysql.

Итак, мне нужен способ установить этот набор в коде, а не в базу данных, чтобы я мог безопасно изменить поле timestamp на datetime.then Liquibase счастлив, я счастлив.

Теперь кажется, что эти интерпретаторы не были выполнены, с небольшим поиском я узнал, что он подходит с использованием entityManager. Это в настоящее время не может быть и речи. Поэтому мне будет интересно узнать, есть ли ПРОСТО вокруг моей проблемы, имея в виду @Prepersist или @PreUpdate или даже другое обходное решение для установки поля LastModified, все еще использующего сеанс

Ответ 1

Теперь кажется, что эти интерпретаторы не были выполнены, при небольшом поиске я узнал, что он подходит с помощью entityManager.

Да, обратные вызовы JPA не будут работать, если вы используете API Session.

Итак, я хотел бы знать, есть ли ПРОСТОЙ способ моей проблемы, имея в виду @PrePersist или @PreUpdate или даже другое обходное решение для установки поля lastModified, все еще использующего сеанс

Насколько мне известно, нет простого пути (если вы используете Spring, MAYBE смотрите этот пост, хотя).

Моим предложением для решения на базе Hibernate было бы использовать events (и один или несколько интерфейсов). В качестве примера можно проверить Hibernate и последнюю измененную дату.