我正在尝试将休眠会话注入 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
我的代码:
持久性.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;
}
角色DAO.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 环境中注入休眠会话(不是 EntityManager)?
谢谢