2010-11-09 2 views
30

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

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

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

Теперь, кажется, что эти переводчики не были выполнены, с небольшим поиска я обнаружил, что он подходит с помощью entityManager .То в настоящее время из question.So я буду хотел бы знать, если это есть SIMPLE путь вокруг моя проблема, имея в виду, имеющие @Prepersist или @PreUpdate или даже другой обходной путь, чтобы установить lastModified поле еще с помощью сеанса

ответ

42

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

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

Так что я хотел бы знать, если есть простой способ вокруг моей проблемы, то есть имеющие @PrePersist или @PreUpdate или даже другой обходной путь, чтобы установить LastModified поле еще с помощью сеанса

К моему знания, нет простого способа обойти (если вы используете Spring, MAYBE посмотрите на this post).

Моим предложением для решения на основе Hibernate было бы использовать events (и один или несколько интерфейсов). Например, проверьте Hibernate and last modified date.

+3

Привет, Паскаль, я пробовал использовать прослушиватель событий спящего режима, и он сработал. Еще раз за вашу помощь. ;) –

+0

Существует очень хорошее объяснение слушателей на [http://anshuiitk.blogspot.sk/2010/11/hibernate-pre-database-opertaion-event.html](http://anshuiitk.blogspot.sk/ 2010/11/hibernate-pre-database-opertaion-event.html) – planky

+0

Вот простой способ включить необходимые прослушиватели событий: https://n1njahacks.wordpress.com/2016/10/07/jpa-callbacks-with- зимует-SessionFactory-и-не-EntityManager / –

Смежные вопросы