jpa - EntityManager 在 DAO 中为空,使用 @PersistenceContext 和 transaction-type="JTA"
问题描述
我面临在 DAO 类中注入实体管理器的问题,我搜索了很多解决方案,但无法解决这个问题。
我有 EJB Bean 类
@Stateless(name = "MyBean", mappedName = "MyBean")
@Remote(MYRemoteBeanI.class)
public class MyBeanImpl implements MYRemoteBeanI {
@EJB
MyDAO dao; // This DAO gets injected. But entity manager inside this DAO is null
}
DAO 类
@Stateless
public class MyDAO {
//This is not injecting, it will be always null
@PersistenceContext(unitName="MyPersistenceUnit")
private EntityManager entityManager;
}
Persistence.xml 如下
<persistence-unit name="MyPersistenceUnit" transaction-type="JTA">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<jta-data-source>myDataSource</jta-data-source>
<mapping-file>META-INF/orm.xml</mapping-file>
<!-- Some managed classes -->
<!-- Some properties -->
</persistence-unit>
</persistence>
请帮助我解决这个问题。我是 EJB 世界的新手!
解决方案
似乎没有从 Persistence.xml 读取您的持久性单元。xml在哪里?
这是连接到 Oracle DB 的 Jboss 7/Wildfly 中的一个工作示例。
@Stateless
public class MyServiceImpl implements MyService {
@EJB(name = "myDAO")
private MyDAO segmentDTO;
}
@Local
public interface MyDAO {
}
@Stateless
public class MyDAOImpl implements MyDAO {
@PersistenceContext(unitName = "exampleEM")
protected EntityManager entityManager;
}
资源/META-INF/persistence.xml
<persistence>
<persistence-unit name="exampleEM" transaction-type="JTA">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>java:jboss/datasources/ExampleDS</jta-data-source>
<!-- your entities -->
<properties>
<property name="hibernate.connection.autocommit" value="false" />
<property name="hibernate.dialect" value="org.hibernate.dialect.OracleDialect" />
<property name="hibernate.show_sql" value="false" />
<property name="hibernate.format_sql" value="false" />
<property name="hibernate.use_sql_comments" value="false" />
<property name="hibernate.id.new_generator_mappings" value="true"/>
<property name="hibernate.hbm2ddl.auto" value="create-drop" />
</properties>
</persistence-unit>
</persistence>
推荐阅读
- llvm - LLVM - 如何将参数传递给函数调用| 错误:调用签名错误的函数
- .net - 在 dotnet core 中添加类库作为项目引用也会导致访问其依赖项
- android - 如何从 recyclerView 中删除项目?
- python - 给出公差比较列表中的浮点数
- php - 为前端选择网站架构/逻辑/结构以及如何实现它
- azure - Azure Functions:为什么我在 Kudu 中看到两个 w3wp 进程?
- python-3.x - 使用 kivymd 的文件管理器代码不起作用
- css - 变暗背景但不是内部内容 - React / Ionic /CSS
- php - 登录尝试修改与另一列
- php - 内部 orderBy 被 Laravel Eloquent 中的外部 orderBy 覆盖