青帝青玄天 2021-03-16 14:12 采纳率: 0%
浏览 77
已结题

Hibernate 获取的持久对象被 JdbcTemplate update 会发生什么?

Hibernate 通过 HQL 获取的对象被 JdbcTemplate 手动 update 会发生什么?

 

大致还原流程:

 

HQL:查询到一条 Demo 数据放到 demo 对象中

FROM DEMO WHERE ID = ?0;

 

//...对 demo进行一系列修改

 

JdbcTemplate:根据上面拿到的 demo 对象修改 DEMO 表

UPDATE DEMO SET XXX=1,XXX=2 WHERE ID = 1;

 

请求执行后,Console 中先出现了 JdbcTemplate 执行的 SQL 日志,又出现了 Hibernate 执行的 SQL 日志,都是在修改 demo 表,此时该程序阻塞。

 

JdbcTemplate 和 Hibernate 不在同一个事务下。

 

问题:因为是通过 HQL 拿的持久对象,对象发生 set 操作后,Hibernate 会把持久对象的值修改到数据库,这里我知道只要把设置关闭Hibernate自动提交或者不取持久对象就可以了,但还是奇怪的是为什么会发生阻塞

  • 写回答

1条回答 默认 最新

  • 关注

    1. 题主怎么是Hibernate和JdbcTemplate都操作吗,建议最好统一

    2. 除了update,有其他事物操作吗,是不是其他操作没有结束,没有提交事物?

        同一id肯定是要锁的,但是应该很快就会执行完成,几乎感觉不到锁了才对的

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 4月11日

悬赏问题

  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效