V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
miaeLKK
V2EX  ›  Java

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

  •  
  •   miaeLKK · Jul 13, 2023 · 1888 views
    This topic created in 1023 days ago, the information mentioned may be changed or developed.

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

    9 replies    2023-07-24 19:57:18 +08:00
    BiChengfei
        1
    BiChengfei  
       Jul 13, 2023
    直接百度 bibernate flush ,有你要的回答
    fmumu
        2
    fmumu  
       Jul 13, 2023
    好像是 flush 的时候才写的? 记不清了
    可以把调试日志打开看看 sql
    miaeLKK
        3
    miaeLKK  
    OP
       Jul 13, 2023
    奇怪的是这代码没改过,之前一直没事,在我优化查询后就出现了。。。优化只是把一个要查询再写入大表清除了无用的数据,区别上感觉只是之前查询很慢,现在查询很快。难道时间长的循环就会落库,后来快了,时间短,就来不及落库?🤦‍😂
    zoharSoul
        4
    zoharSoul  
       Jul 13, 2023
    保持简单 远离 hibernate /dog
    knightdf
        5
    knightdf  
       Jul 13, 2023
    不 flush 怎么查的到
    Kenyore
        6
    Kenyore  
       Jul 13, 2023   ❤️ 1
    @miaeLKK 之前使用的内存比较多 帮你自动 flush 了吧
    dushixiang
        7
    dushixiang  
       Jul 13, 2023
    别用 hibernate ,生命周期挺烦人的。
    有时候你写了 save 不更新,但是修改对象属性的时候自动更新了,总之就是反常识,反人类,不要用。
    jeffh
        8
    jeffh  
       Jul 13, 2023
    我的评价是:hibernate 不如 mybatis plus
    yoloMiss
        9
    yoloMiss  
       Jul 24, 2023
    一个事务中必须得要先 flush ,然后才能拿到。不过,貌似我记得这个东西是可以修改配置的,只要 save 了,默认 flush 。
    不过,你要是写过原生的 jdbc 提交,每次查询或者插入、更新,删除动作都要手动创建 sqlsession 的,那你就会回头感叹,hibernate 真香。😂
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   846 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 38ms · UTC 19:43 · PVG 03:43 · LAX 12:43 · JFK 15:43
    ♥ Do have faith in what you're doing.