我的应用程序正在使用JPA,并部署在GlassFish 3.1下(因此使用EclipseLink)。它运行正常,但我现在正在尝试使用DAO实现。
我找到了that article。但似乎没有使用注入持久化上下文。因此,我有一个实体类,一个无状态EJB类和一个persistence.xml
文件。在我的EJB中@PersistenceContext(name=...)
注释。就像它正在发挥作用。
现在我添加一个DAO接口和一个JPA DAO类(实现了交互接口)。在我的JPA DAO中,我正在尝试注入持久化上下文,但它不起作用。没有例外,但仍然是空的。
我该怎么办?
如果用GlassFish不可能做到这一点,我的第一个想法就是将实体管理器传递给DAO。它有效,但是它很“好”吗?
第二个想法是像无状态bean一样实现JPA DAO并将其注入我的EJB中。它也在工作,但......?是不是一个好主意?
答案 0 :(得分:1)
除非对象由容器管理,否则不能注入PersistenceContext。它必须是@Stateless
或@Singleton
或类似的东西。您还可以使用CDI(JSR-299)来进行bean容器管理并使注入工作。或者你可以使用Spring,就像那篇与你谈到的文章一样。