【问题标题】:Accessing session of spring injected EntityManager访问spring注入的EntityManager的会话
【发布时间】:2012-01-30 11:41:42
【问题描述】:

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

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

我得到转换异常,因为 spring 为 entityManager 注入了一个代理。请告诉我该怎么做。

注意:我使用的是 Eclipselink JPA。

谢谢。

【问题讨论】:

    标签: spring session jpa eclipselink entitymanager


    【解决方案1】:

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

    JpaHelper.getEntityManager(entityManager).getActiveSession()
    

    【讨论】:

    • 我正在使用 JPA 2.0 实现。谢谢。
    【解决方案2】:

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

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-13
    • 2015-08-11
    • 2016-11-24
    • 2011-02-05
    • 2015-05-02
    • 1970-01-01
    • 2019-01-04
    相关资源
    最近更新 更多