0

我有这个 Resources 类,它产生我的 entityManager 以及一个休眠会话:

public class Resources {

    @Produces
    @PersistenceContext
    private EntityManager em;

    @Produces
    public Session produceSession() {
        return em.unwrap(Session.class);
    }
}

当我在我的 EJB 类中注入 EntityManager 时,它工作正常,但使用注入的休眠会话只能在第一次工作。在此之后,它总是关闭。我认为 CDI 有效,但它只注入了一次我的依赖项,所以我不能使用它。

所以,我决定使用这个:

entityManager.unwrap(Session.class)

每次我需要一个休眠会话。例如:

return criteria.getExecutableCriteria(entityManager.unwrap(Session.class)).list();

我的两个问题是:还有其他方法吗?这是一个正确的方法吗?

希望有人在这里帮助我!谢谢!

4

1 回答 1

0

有一些 CDI 扩展,其中一些提供休眠集成。但实际上,这对你来说应该很好。

但是,JPA 2 有一个您可能感兴趣的标准 API。

于 2013-08-06T12:03:04.010 回答