JPA / Hibernate вопрос (@PrePersist, разъяснение Session API) - PullRequest
2 голосов
/ 02 февраля 2011

В настоящее время я работаю над созданием некоторых тестов для моего приложения.Я столкнулся с проблемой, которая должна включать функцию @PrePersist от JPA.К сожалению, эти перехватчики не запускаются при сохранении, обновлении (и т. Д.), И я обнаружил, что с помощью Session API в Hibernate эта функция не работает.Здесь возникает мой вопрос.

Что является основным доказательством того, что Session API используется в приложении, и есть ли шанс получить непосредственно EntityManager, чтобы сработали триггеры?советы и подсказки по этой теме,

1 Ответ

3 голосов
/ 02 февраля 2011

Что является основным доказательством использования Session API в приложении

Упрощенно, EntityManager API - это «оболочка» вокруг исходного Session API.Но я думаю, что вы хотите еще один ответ :-) Единственный другой ответ, который я могу дать, это проверить исходный код.Или, если у вас нет исходного кода, вы можете изменить конфигурацию ведения журнала.Установите для него значение «trace» для класса Session, тогда вы сможете точно определить, когда он вызывается.

, и есть ли шанс получить непосредственно EntityManager, чтобы сработали триггеры?*

Конечно, в зависимости от используемого вами сервера приложений или платформы.Если у вас есть «настоящий» сервер приложений, вы можете извлечь EM с него.Если вы используете автономное приложение, вы можете использовать EntityManagerFactory для создания EntityManager.Но перед этим я бы проверил примеры из набора тестов Hibernate:

https://github.com/hibernate/hibernate-core/blob/master/hibernate-entitymanager/src/test/java/org/hibernate/ejb/test/LastUpdateListener.java

Кроме того, если вы используете , а не с использованием JPA API, вы можетевсе еще есть слушатели событий в Hibernate:

http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html_single/#objectstate-events

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