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"/>
  • 相关阅读:
    使用数组实现简单线性表功能
    解析.NET 许可证编译器 (Lc.exe) 的原理与源代码剖析
    Entity Framework with NOLOCK
    64位CentOS 6.0下搭建LAMP环境
    如何正确看待Linq的DistinctBy扩展和ForEach扩展
    jQuery最佳实践
    大话数据结构-树
    hdu2534-Score
    WKE——Webkit精简的纯C接口的浏览器
    WM_ERASEBKGND官方解释(翻译),以及Delphi里所有的使用情况(就是绘制窗口控件背景色,并阻止进一步传递消息)
  • 原文地址:https://www.cnblogs.com/chenhtblog/p/8157289.html
Copyright © 2011-2022 走看看