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. 题主怎么是Hibernate和JdbcTemplate都操作吗,建议最好统一

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

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