访问Spring注入的EntityManager会话

时间:2011-12-30 10:03:06

标签: spring session jpa eclipselink entitymanager

在我的应用程序中,我通过Spring注入了EntityManager。我如何访问EntityManager会话?当我试图这样做时:

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

我得到了转换异常,因为spring为entityManager注入了一个代理。请让我知道如何做到这一点。

注意:我使用的是Eclipselink JPA。

感谢。

2 个答案:

答案 0 :(得分:0)

您应该使用EntityManager的unwrap方法来访问特定于提供程序的实现。

PS:我在EclipseLink javadoc中找不到任何EntityManagerImpl。它在哪里?

答案 1 :(得分:0)

您可以使用@JBNizet建议的unwrap。但是,这要求您使用符合JPA 2.0的API。但是,如果您被限制使用JPA 1.0,请尝试JpaHelper class。其getEntityManager方法可用于获取活动会话。

JpaHelper.getEntityManager(entityManager).getActiveSession()