zoukankan      html  css  js  c++  java
  • createQuery is not valid without active transaction

    hibernate事务支持

    报createQuery is not valid without active transaction错误说明你的方法没有事务支持。

    解决办法1:在hibernate或spring配置文件加入

    <prop key="hibernate.current_session_context_class">thread</prop>

    这句。然后在你调用的方法上显示开启事务:

    sessionFactory.getCurrentSession().beginTransaction();

    执行自己的操作,然后显示提交

    sessionFactory.getCurrentSession().getTransaction().commit();

    这样有一个麻烦事就是每次都要显示处理事务,很麻烦,而且相同代码重复出现,明显冗余。

    解决办法2:

    使用aop,此时依然用sessionFactory.getCurrentSession()做持久化操作。这时要去掉下面一句:

    <prop key="hibernate.current_session_context_class">thread</prop>

    但加入如下配置:

     <!-- 这里要配置你的bean 和sessionFactory-->
     <bean id="userService" class="**" 
                p:sessionFactory-ref="sessionFactory"/>
       
        <!-- 配置Hibernate的局部事务管理器,使用HibernateTransactionManager类 
            并注入SessionFactory的引用 -->
        <bean id="transactionManager" class=
            "org.springframework.orm.hibernate4.HibernateTransactionManager"
            p:sessionFactory-ref="sessionFactory"/>    
        <!-- 配置事务增强处理Bean,指定事务管理器 -->
        <tx:advice id="txAdvice" transaction-manager="transactionManager">
            <!-- 用于配置详细的事务语义 -->
            <tx:attributes>
                <!-- 方法使用默认的事务设置 -->
                <tx:method name="*"/>
            </tx:attributes>
        </tx:advice>
        <aop:config>
            <!-- 配置一个切入点,这个Bean的所有方法的执行 -->
            <aop:pointcut id="myPointcut"
                expression="bean(userService)"/>
            <!-- 指定切入点应用txAdvice事务增强处理 -->
            <aop:advisor advice-ref="txAdvice" 
                pointcut-ref="myPointcut"/>
        </aop:config>    
        <aop:aspectj-autoproxy proxy-target-class="true"/>
  • 相关阅读:
    SpringBoot + CXF快速实现SOAP WebService(支持Basic Auth)
    利用iptables做端口转发
    artDialog测试
    jquery的常用ajax操作
    通过委托让缓存操作更优雅
    Jquery取得iframe中元素的几种方法
    jQuery选择器大全
    常用JS汇总
    firefox广告拦截插件
    easyUI删除行的操作
  • 原文地址:https://www.cnblogs.com/chenhtblog/p/8157289.html
Copyright © 2011-2022 走看看