将hibernate会话(不是EntityManager)注入DAO(使用JEE6)

将hibernate会话(不是EntityManager)注入DAO(使用JEE6),hibernate,jboss7.x,java-ee-6,cdi,ejb-3.1,Hibernate,Jboss7.x,Java Ee 6,Cdi,Ejb 3.1,我正在尝试将hibernate会话注入DAO。 DAO被注入带有CDI的EJB3.1无状态Bean中 我不想使用EntityManager。我更喜欢直接使用Hibernate会话。 但是使用EJB时,应用服务器(JBoss7)尝试注入EntityManager,而不是hibernate会话 当DAO创建时,我得到以下错误: 原因:java.lang.IllegalArgumentException:无法将org.hibernate.Session字段com.mycompany.persiste

我正在尝试将hibernate会话注入DAO。 DAO被注入带有CDI的EJB3.1无状态Bean中

我不想使用EntityManager。我更喜欢直接使用Hibernate会话。 但是使用EJB时,应用服务器(JBoss7)尝试注入EntityManager,而不是hibernate会话


当DAO创建时,我得到以下错误:

原因:java.lang.IllegalArgumentException:无法将org.hibernate.Session字段com.mycompany.persistence.dao.RoleDAO.Session设置为org.jboss.as.jpa.container.TransactionScopedentialManager


我的代码:

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>

RoleDAO.java

@Named
public class RoleDAO {

    @PersistenceUnit(unitName = "MyPU")
    private Session session;
}

错误是:
原因:java.lang.IllegalArgumentException:无法将org.hibernate.Session字段com.mycompany.persistence.dao.RoleDAO.Session设置为org.jboss.as.jpa.container.TransactionScopedentialManager

是否可以在EJB环境中注入hibernate会话(而不是EntityManager)


谢谢,当然不是那样的。我甚至不知道如果不写一大堆样板文件来加入交易之类的事情,你会怎么做。我的建议是使用
EntityManager.getDelegate()
并将其强制转换到Hibernate会话

@Named
public class RoleDAO {

    @PersistenceUnit(unitName = "MyPU")
    private Session session;
}