代码之家  ›  专栏  ›  技术社区  ›  chedine

没有绑定到线程的休眠会话,并且配置不允许在此处创建非事务性会话。

  •  26
  • chedine  · 技术社区  · 16 年前

    这是什么错误?” 没有绑定到线程的休眠会话,并且配置不允许在此处创建非事务性会话。 “。 我的Spring配置文件看起来像这样。

    <bean id="jndiDataSource"
        class="org.springframework.jndi.JndiObjectFactoryBean">
        <property name="jndiName">
            <value>java:/devDS</value>
        </property>
    </bean>
    <bean id="stsaDBFactory"
        class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
        <property name="dataSource" ref="jndiDataSource" />
        <property name="annotatedClasses">
            <list>
                <value>xx.yy.zz.User</value>
                <value>xx.yy.UserResponse</value>
    
            </list>
        </property>
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.show_sql">true</prop>
                <prop key="hibernate.hbmddl.auto">create</prop>
            </props>
        </property>
    </bean>
    
    <!-- ################################### Aspects ################################################## -->
    
    <bean id="txManager"
        class="org.springframework.orm.hibernate3.HibernateTransactionManager">
        <property name="sessionFactory">
            <ref local="stsaDBFactory" />
        </property>
    </bean>
    

    当我使用JUnit在容器外部测试它们时,所有的DAO测试都通过了。当我将它作为门户应用程序部署到JBoss中时,我得到了这个异常。如果我删除门户特定的配置,使其成为一个简单的Web应用程序,并将其部署到JBoss上,那么它也可以正常工作。知道吗?

    2 回复  |  直到 13 年前
        1
  •  35
  •   florin    15 年前

    您已经在Spring配置中定义了TransactionManager,但您正尝试在非事务性方法中执行Hibernate查询。尝试将@transactional添加到方法或类中。

        2
  •  4
  •   Tony Rad    13 年前

    我通过指定 current_session_context_class 在里面 hibernate config “是” thread “,根据中所示的简单配置 hibernate configuration documentation .

    但它建议它不安全的生产使用。

    正在尝试将以下内容添加到 休眠配置 也有助于:

    <property name="current_session_context_class">org.hibernate.context.ThreadLocalSessionContext</property>
    

    退房 http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html/architecture.html#architecture-current-session 了解更多详细信息。