hibernate 在一个事务内查询不到新增数据?

2023 年 7 月 13 日
 miaeLKK

一个 service 方法下的循环,应该是一个事务内。循环里对同一表先查再插,后面循环再查询无法读到最新数据,加了 flush 后好使了,这是怎么回事?一个事务内读不到最新数据?

1876 次点击
所在节点    Java
9 条回复
BiChengfei
2023 年 7 月 13 日
直接百度 bibernate flush ,有你要的回答
fmumu
2023 年 7 月 13 日
好像是 flush 的时候才写的? 记不清了
可以把调试日志打开看看 sql
miaeLKK
2023 年 7 月 13 日
奇怪的是这代码没改过,之前一直没事,在我优化查询后就出现了。。。优化只是把一个要查询再写入大表清除了无用的数据,区别上感觉只是之前查询很慢,现在查询很快。难道时间长的循环就会落库,后来快了,时间短,就来不及落库?🤦‍😂
zoharSoul
2023 年 7 月 13 日
保持简单 远离 hibernate /dog
knightdf
2023 年 7 月 13 日
不 flush 怎么查的到
Kenyore
2023 年 7 月 13 日
@miaeLKK 之前使用的内存比较多 帮你自动 flush 了吧
dushixiang
2023 年 7 月 13 日
别用 hibernate ,生命周期挺烦人的。
有时候你写了 save 不更新,但是修改对象属性的时候自动更新了,总之就是反常识,反人类,不要用。
jeffh
2023 年 7 月 13 日
我的评价是:hibernate 不如 mybatis plus
yoloMiss
2023 年 7 月 24 日
一个事务中必须得要先 flush ,然后才能拿到。不过,貌似我记得这个东西是可以修改配置的,只要 save 了,默认 flush 。
不过,你要是写过原生的 jdbc 提交,每次查询或者插入、更新,删除动作都要手动创建 sqlsession 的,那你就会回头感叹,hibernate 真香。😂

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://study.congcong.us/t/956352

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX