【发布时间】:2013-04-03 14:25:40
【问题描述】:
我正在尝试将休眠会话注入 DAO。 DAO 被注入到带有 CDI 的 EJB 3.1 无状态 Bean 中。
我不想使用 EntityManager。我更喜欢直接使用 Hibernate Session。 但是与 EJB 一起使用时,应用程序服务器(JBoss 7)会尝试注入 EntityManager,而不是休眠会话。
在创建 DAO 时出现以下错误:
Caused by: java.lang.IllegalArgumentException: Can not set org.hibernate.Session field com.mycompany.persistence.dao.RoleDAO.session to org.jboss.as.jpa.container.TransactionScopedEntityManager
我的代码:
persistence.xml
<persistence>
<persistence-unit name="MyPU">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>java:jboss/datasources/MyDS</jta-data-source>
<class>com.mycompany.entity.MyEntity</class>
<class>com.mycompany.entity.OtherEntity</class>
<properties>
<property name="hibernate.show_sql" value="false" />
</properties>
</persistence-unit>
</persistence>
RoleBean.java(EJB)
@Stateless
@Remote(RoleRemote.class)
public class RoleBean implements RoleRemote {
@Inject
private RoleDAO roleDAO;
}
RoleDAO.java
@Named
public class RoleDAO {
@PersistenceUnit(unitName = "MyPU")
private Session session;
}
和错误:
Caused by: java.lang.IllegalArgumentException: Can not set org.hibernate.Session field com.mycompany.persistence.dao.RoleDAO.session to org.jboss.as.jpa.container.TransactionScopedEntityManager
是否可以在 EJB 环境中注入 hibernate Session(不是 EntityManager)?
谢谢
【问题讨论】:
标签: hibernate jboss7.x java-ee-6 cdi ejb-3.1