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"/>
  • 相关阅读:
    NB-IoT成为3GPP后会有哪些优势
    NB-IOT覆盖范围有多大 NB-IOT的强覆盖是怎么实现的
    4G DTU无线数据透明传输终端
    NB-IoT DTU是什么 NB-IoT的优势有哪些
    4G DTU是什么 4G DTU的功能和特点
    LoRa技术的发展应用和LoRa应用设备
    4G DTU为什么要具有透传的功能
    跨链在SIPC.VIP上的使用流程
    SimpleChain 开发挑战赛邀你来报名啦
    SimpleChain区块链管理系统使用教程
  • 原文地址:https://www.cnblogs.com/chenhtblog/p/8157289.html
Copyright © 2011-2022 走看看