在我的应用程序中,我通过Spring注入了EntityManager。我如何访问EntityManager会话?当我试图这样做时:
Session session = ((EntityManagerImpl) entityManager).getActiveSession();
我得到了转换异常,因为spring为entityManager注入了一个代理。请让我知道如何做到这一点。
注意:我使用的是Eclipselink JPA。
感谢。
答案 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()