2013-04-03 3 views
0

Я пытаюсь ввести сессию спящего режима в DAO. DAO вводится в EJB 3.1 Faceless Bean с CDI.Включение сеанса спящего режима (не EntityManager) в DAO (с JEE6)

Я не хочу использовать EntityManager. Я предпочитаю сессию Hibernate напрямую. Но с помощью 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

Можно ли вводить в спящий режим Сессия (не Enti tyManager) в среде EJB?

Thanks

ответ

1

Конечно, не так. Я даже не знаю, как вы это сделаете, не написав кучу шаблонов, чтобы присоединиться к транзакции и еще много чего. Мой совет - использовать EntityManager.getDelegate() и передать его на сеанс Hibernate.