1

我已经在 HibernateDAOFactory 类中实现了基于Link的 DAO ,有一个方法

protected Session getCurrentSession() {
     return HibernateUtil.getSessionFactory().getCurrentSession();
}

为了实现相同的功能,我对 hibernate.cfg.xml 进行了更改,如下面的文章中所述此处 1 HERE 2

    <property name="transaction.factory_class">org.hibernate.transaction.JTATransactionFactory</property><br/>
    <property name="transaction.manager_lookup_class">org.hibernate.transaction.JBossTransactionManagerLookup</property>
    <property name="hibernate.current_session_context_class">thread</property>

在 jboss 上部署时出现以下错误

org.hibernate.TransactionException: could not register synchronization

我什至设置了属性

<property name="hibernate.current_session_context_class">jta</property>

但我收到以下错误。

 Caused by: org.hibernate.HibernateException: Unable to locate current JTA transaction

 at org.hibernate.context.JTASessionContext.currentSession(JTASessionContext.java:88)

 at org.hibernate.impl.SessionFactoryImpl.getCurrentSession(SessionFactoryImpl.java:574)

我在这里错过了什么吗?我的 jboss 版本是 4.2.3,hibernate 版本是 3.3.1,使用 Java 7。

4

1 回答 1

0

对于基于线程的会话管理,我从 hibernate.cfg.xml 中删除了transaction.factory_classandmanager_lookup_class属性,它就像一个魅力。
但是对于基于 jta 的会话管理,我仍然遇到同样的错误。

于 2012-10-08T17:53:42.000 回答