Hibernate 监听器PostUpdateEvent .getOldState 为null

请问哪位大神遇到过这个情况啊,麻烦帮帮我,给个详细的解答

1个回答

PostUpdateEvent#getOldState() 返回的是修改前的数据库状态? 你数据库的数据就是null吧?

yangwp1
带着灵魂战斗 我是应该,先执行refresh,然后在修改属性,然后在update把,我刚才修改之后,refresh发现值没变,原来是这个方法弄的
大约 8 年之前 回复
jinnianshilongnian
jinnianshilongnian
大约 8 年之前 回复
yangwp1
带着灵魂战斗 refresh ( Object object) 重读从基础数据库中的特定实例的状态。 是这个方法吧
大约 8 年之前 回复
jinnianshilongnian
jinnianshilongnian hibernate API
大约 8 年之前 回复
yangwp1
带着灵魂战斗 那这个refresh()是哪里的方法啊,,我感觉还是 refresh好点
大约 8 年之前 回复
jinnianshilongnian
jinnianshilongnian find-update也行 refresh()表示强制同步数据库数据
大约 8 年之前 回复
yangwp1
带着灵魂战斗 你说的这个refresh 是指我重新find下,再修改吗
大约 8 年之前 回复
jinnianshilongnian
jinnianshilongnian 那就是瞬态。 你可以调用refresh获取最新的。
大约 8 年之前 回复
yangwp1
带着灵魂战斗 数据是首次加载页面时从数据库里查出来,放入缓存的,修改的数据也是从缓存里查的,然后update
大约 8 年之前 回复
jinnianshilongnian
jinnianshilongnian 你应该直接update 瞬态对象,这样的话 oldState拿到的是修改前的值。 瞬态对象 默认值就是你new对象时实例变量的默认值 如state=null 你应该拿到的是null 你应该先find 再update 这样拿到的就是 数据库old值
大约 8 年之前 回复
jinnianshilongnian
jinnianshilongnian 你是先查 再update 还是直接update瞬态对象
大约 8 年之前 回复
yangwp1
带着灵魂战斗 有一点很奇怪,修改的时候用update,oldState就没值,用merge就有值,
大约 8 年之前 回复
jinnianshilongnian
jinnianshilongnian oldState拿到的是修改前的值。 默认值 比如默认值 state=2 你应该拿到的是2 你应该先find 再update 这样拿到的就是 数据库old值
大约 8 年之前 回复
yangwp1
带着灵魂战斗 不是的,修改好多字段,这个oldState 不是0就是null.一直没值,
大约 8 年之前 回复
    立即提问
    相关内容推荐