【发布时间】:2014-12-17 12:28:04
【问题描述】:
在包含我的 DAO 的第三方 jar 库中注入带有 @PersistenceUnit 的 EntityManagerFactory 时遇到问题。
这是我的多模块 maven 项目结构。
-EAR
\-WAR ==> the webapp (maven type war)
\-EJB ==> the service facade (maven type EJB (provided to War)
\CORE ==> the legacy DAO's library (maven type JAR)
我使用 CDI 将所有内容连接在一起 ==> 在所有 maven 项目中都有一个 beans.xml 文件...并且 CDI 工作正常。
但是当我将@PersistenceUnit 注解放到CORE 项目中时,它不起作用。 (该字段为空)
当我在 EJB 项目中使用 @PersistenceUnit 时,一切正常。
我的 persistence.xml 文件位于 EJB 项目的 META-INF 文件夹下(但我也尝试将其放入核心项目中……但没有成功)。
这里是注入点:
public class HibernateSupport {
@PersistenceUnit
private EntityManagerFactory emf;
...
}
这个类是用 CDI 注入到 EJB 项目中的(它可以工作......但是 emf 字段为空......)
有人可以帮我吗?
编辑:
如果我把我的核心项目变成一个 EJB 项目(maven 类型 ejb)。然后它就可以工作了...但是我希望我的核心项目仍然是 POJO 项目...
编辑 2:
生产者代码:
@PersistenceUnit
private EntityManagerFactory emf;
@Produces
public SessionFactory getSessionFactory() {
return ((HibernateEntityManagerFactory)emf).getSessionFactory();
}
【问题讨论】:
-
请告诉我们注入点。以及您如何引用此类注入的位置。
-
你的persistence.xml在哪里?
-
@Skizzo - 我的 persistence.xml 在 EJB 项目的 META-INF 文件夹下(但我也尝试将它放在核心项目下)(主帖子已使用此信息更新)
-
@JohnAment 我已经在主帖中添加了注入点。核心项目中的 HibernateSupport 类。此类通过 CDI 注入到 EJB 中(并且有效……但 emf 字段仍然为空)
标签: maven persistence cdi java-ee-6 weblogic12c