2011-12-30 3 views
1

В моем приложении я ввел EntityManager через Spring. Как я могу получить доступ к сеансу EntityManager? Когда я попытался сделать это:Доступ к сеансу весеннего инъецируемого EntityManager

Session session = ((EntityManagerImpl) entityManager).getActiveSession(); 

Я получаю исключение исключения, так как Spring вводит прокси для entityManager. Пожалуйста, дайте мне знать, как это сделать.

Примечание: Я использую Eclipselink JPA.

Спасибо.

ответ

0

Вы должны использовать метод EntityManager unwrap для доступа к реализации конкретного поставщика.

PS: Я не нашел EntityManagerImpl в EclipseLink javadoc. Где это?

+0

Я получил это при просмотре такого кода ... например: http://stackoverflow.com/questions/3105968/eclipselink-document-doesnt-explain-session. – popcoder

0

Вы можете использовать unwrap, как предложено @JBNizet. Однако для этого требуется, чтобы вы использовали API, совместимый с JPA 2.0. Если, однако, вам необходимо использовать JPA 1.0, попробуйте JpaHelper class. Его метод getEntityManager может использоваться для доступа к активному сеансу.

JpaHelper.getEntityManager(entityManager).getActiveSession() 
+0

Я использую реализацию JPA 2.0. Благодарю. – popcoder

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