Spring5与Hibernate5升级后无报错但数据无法存入数据库问题求助
问题排查点
- 首先核对bean id大小写匹配问题:你配置中
providerDao注入sessionFactory时引用的是AbcSessionFactory,但实际定义的SessionFactory bean id为ABCSessionFactory,Spring bean id大小写敏感,若实际配置确实存在该差异,会导致注入异常,优先修正该配置。 - 检查事务生效配置:你已配置
HibernateTransactionManager,但需确认两点:- 配置文件中是否开启了事务注解驱动,添加如下配置:
<tx:annotation-driven transaction-manager="txManager"/>- 调用
providerDao.save()的上层业务方法是否添加了@Transactional注解,且注解是Spring的org.springframework.transaction.annotation.Transactional,而非javax的同名注解。
- 验证刷库逻辑:可在
saveOrUpdate后手动添加刷库操作测试,如下:
若添加后数据可正常写入,说明原逻辑无事务触发自动flush,本质还是事务配置问题。getHibernateTemplate().saveOrUpdate(instance); getHibernateTemplate().flush(); // 手动触发刷入数据库 - 日志排查:将
${abc.showSql}配置值改为true,同时新增hibernate配置:
运行时观察控制台是否打印对应的INSERT/UPDATE语句,若无SQL打印,说明操作未触发持久化,优先排查事务与SessionFactory注入问题。<prop key="hibernate.format_sql">true</prop> <prop key="hibernate.use_sql_comments">true</prop> - 检查实体映射配置:核对
Provider.hbm.xml的主键生成策略,若为主键手动赋值策略(如assigned),需确认Provider实例已正确设置主键值,否则会导致持久化失败无报错。
内容的提问来源于stack exchange,提问作者user3067524
相关产品推荐
相关产品推荐

