Spring 4.2.5 + Hibernate 5.2.10 报错笔记

11 篇文章 0 订阅
3 篇文章 0 订阅

项目离线无网开发,无法帖出报错控制台信息

当@Transactional的isolation属性指定了值时Hibernate执行总是抱错无法执行

通过跟踪代码发现Hibernate 5.2.10的ConnectionReleaseMode默认AFTER_TRANSACTION

Spring期望值是ON_CLOSE


如果不想改变Spring+Hibernate的版本的话,解决办法如下

改变LocalSessionFactoryBean bean,在hibernateProperties属性上添加hibernate.connection.handling_mode=DELAYED_ACQUISITION_AND_HOLD


<bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">  
        <!-- 隐藏其他属性设置 -->  
        <property name="hibernateProperties">   
            <props>     
                <prop key="hibernate.connection.handling_mode">DELAYED_ACQUISITION_AND_HOLD</prop>    
                <!-- 也可以使用下面这个,但它已经标注为弃用,推荐使用上面的 -->
		<!--
		<prop key="hibernate.connection.release_mode">ON_CLOSE</prop>
		 -->
            </props>     
         </property>   
</bean> 


hibernate-release-5.0.2.Final spring-framework-4.2.1.RELEASE 数据库是 mysql 数据库的连接符 jdbc:mysql://localhost:3306/test_db?useUnicode=true&characterEncoding=UTF-8 放在jdbc.properties 文件中 创建完成数据库test_db后,在eclipse中,执行 @Test public void testSaveMore() 由hibernate5 根据映射文件Person.hbm.xml自动生成person表,表结构可参考如下sql语句 /* Navicat MySQL Data Transfer Source Server : MYSQL56 Source Server Version : 50624 Source Host : localhost:3306 Source Database : test_db Target Server Type : MYSQL Target Server Version : 50624 File Encoding : 65001 Date: 2015-10-27 11:16:43 */ SET FOREIGN_KEY_CHECKS=0; -- ---------------------------- -- Table structure for `person` -- ---------------------------- DROP TABLE IF EXISTS `person`; CREATE TABLE `person` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(10) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=22 DEFAULT CHARSET=utf8; -- ---------------------------- -- Records of person -- ---------------------------- INSERT INTO `person` VALUES ('1', '小张'); INSERT INTO `person` VALUES ('12', '测试数据0'); INSERT INTO `person` VALUES ('13', '测试数据1'); INSERT INTO `person` VALUES ('14', '测试数据2'); INSERT INTO `person` VALUES ('15', '测试数据3'); INSERT INTO `person` VALUES ('16', '测试数据4'); INSERT INTO `person` VALUES ('17', '测试数据5'); INSERT INTO `person` VALUES ('18', '测试数据6'); INSERT INTO `person` VALUES ('19', '测试数据7'); INSERT INTO `person` VALUES ('20', '测试数据8'); INSERT INTO `person` VALUES ('21', '测试数据9');
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值