Java 如何在wildfly8中将EmtityManager注入BaseDao?

Java 如何在wildfly8中将EmtityManager注入BaseDao?,java,jpa,cdi,wildfly,Java,Jpa,Cdi,Wildfly,在我的BaseDao中,我使用 @PersistenceContext(unitName = "primary") protected EntityManager em; 注入EntityManager和其他DAO继承自它,例如UserDao。在我的项目中,我使用 @Inject private UserDao userDao; 有时候,不是每次,它都会抛出异常,比如 无法将javax.persistence.EntityManager字段com.XXX.storage.dao.BaseD

在我的BaseDao中,我使用

@PersistenceContext(unitName = "primary") 
protected EntityManager em;
注入EntityManager和其他DAO继承自它,例如UserDao。在我的项目中,我使用

@Inject
private UserDao userDao;
有时候,不是每次,它都会抛出异常,比如
无法将javax.persistence.EntityManager字段com.XXX.storage.dao.BaseDao.em设置为com.XXX.storage.dao.UserDao$Proxy$\u$\ uWeldSubclass,我不知道原因,有人能帮我吗?非常感谢

我怀疑这与应用程序的内部结构有关。DAO是否打包在模块(ejb和/或web)之间共享的jar文件中?如果是这样,当DAO从不同的模块中使用时,是否会发生错误?如果这两个都是真的,那么您的实体管理器在某些模块中的映射肯定是错误的。感谢您的回答!是的,我的DAO打包在模块(而不是ejb)之间共享的jar文件中,这些DAO从不同的模块中使用。我应该如何解决这个问题?我是一个新手。简而言之,你需要确保所有对外部资源的引用都能从所有模块中正确解析。如果看不到整个代码库和所有错误消息,就很难给出具体的说明,但是,请查看日志,找出是否存在与数据源映射或类似资源相关的错误。JPA配置可以从一个模块访问,但不能从另一个模块访问。或者模块之间的数据源映射不同。如果你能确定哪个模块在工作,那么让所有其他模块都与之相同。