当前位置: 首页 > news >正文

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"/>

 

转载于:https://www.cnblogs.com/chenhtblog/p/8157289.html

相关文章:

  • hello
  • 设计模式-结构型
  • Ubuntu安装tomcat
  • Linuxkit 使用指南
  • RHEL 6.1 KVM虚拟机桥接物理机网络
  • Java IO 系统
  • 我的相亲日记_8(原创连载)
  • mysql api---从一个小例子开始mysql编程入门(4)
  • 2010 .NET面试题整理之基础篇[转]
  • [翻译]通信模式(Communication Patterns)
  • Java实现二分插入排序
  • Linux内核中实现生产者与消费者(避免无效唤醒)【转】
  • 春Phone计划 51cto技术沙龙成都站分享
  • 数据校验之Spring和Hibernate validate(二)
  • 解决棘手问题的法宝
  • [译]前端离线指南(上)
  • 【391天】每日项目总结系列128(2018.03.03)
  • Asm.js的简单介绍
  • Fastjson的基本使用方法大全
  • Java新版本的开发已正式进入轨道,版本号18.3
  • Octave 入门
  • Redis的resp协议
  • vue+element后台管理系统,从后端获取路由表,并正常渲染
  • vue-router 实现分析
  • webpack入门学习手记(二)
  • 分享一个自己写的基于canvas的原生js图片爆炸插件
  • 将 Measurements 和 Units 应用到物理学
  • 数据科学 第 3 章 11 字符串处理
  • 体验javascript之美-第五课 匿名函数自执行和闭包是一回事儿吗?
  • 推荐一款sublime text 3 支持JSX和es201x 代码格式化的插件
  • 移动端解决方案学习记录
  • “十年磨一剑”--有赞的HBase平台实践和应用之路 ...
  • Semaphore
  • 扩展资源服务器解决oauth2 性能瓶颈
  • 正则表达式-基础知识Review
  • ​卜东波研究员:高观点下的少儿计算思维
  • ​软考-高级-系统架构设计师教程(清华第2版)【第15章 面向服务架构设计理论与实践(P527~554)-思维导图】​
  • (SpringBoot)第二章:Spring创建和使用
  • (附源码)springboot 校园学生兼职系统 毕业设计 742122
  • (附源码)springboot家庭财务分析系统 毕业设计641323
  • (附源码)springboot优课在线教学系统 毕业设计 081251
  • (七)理解angular中的module和injector,即依赖注入
  • (企业 / 公司项目)前端使用pingyin-pro将汉字转成拼音
  • (亲测)设​置​m​y​e​c​l​i​p​s​e​打​开​默​认​工​作​空​间...
  • (原創) 物件導向與老子思想 (OO)
  • (转)linux下的时间函数使用
  • *p++,*(p++),*++p,(*p)++区别?
  • .locked1、locked勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .Mobi域名介绍
  • .NET 5.0正式发布,有什么功能特性(翻译)
  • .NET Compact Framework 多线程环境下的UI异步刷新
  • .NET CORE 3.1 集成JWT鉴权和授权2
  • .net core webapi 大文件上传到wwwroot文件夹
  • .NET Framework Client Profile - a Subset of the .NET Framework Redistribution
  • .NET 自定义中间件 判断是否存在 AllowAnonymousAttribute 特性 来判断是否需要身份验证