用HQL查询返回的对象不是持久化对象吗,那为什么我的程序里不自动给这个对象更新

比如我有个方法用的是HQL进行了查询并返回了list《Object》集合,返回后我对这个list遍历,并对每个对象进行了更改,比如setLastUpdate,setPro... 比如我有个方法用的是HQL进行了查询并返回了list《Object》集合,返回后我对这个list遍历,并对每个对象进行了更改,比如setLastUpdate,setProCode 等,问题是这种对象不是不用更新方法 ,最后hibernate应该对这些持久化对象更新啊,为什么我这里没有更新。或者要更新 得配置那些?之前认识只是以为只要用HQL查询出的都不用更新,现在发现还得配置其他什么东西吧?求大神解释啊
补充问题:如果用taskExecutor.execute(new ResolveFridgeTaskForEspThread(forcastAccordTitleId));如果开启事务后调用线程,那这个线程里还有事务吗?就是说这个线程还被上面方法体里的事务管理吗
展开
 我来答
严肃的甲道士
2013-10-31 · 传播技术传播爱,笔芯❤️
严肃的甲道士
采纳数:337 获赞数:619

向TA提问 私信TA
展开全部
更新是不会有延迟的,hibernate数据持久化有三种状态:瞬时、持久、游离。三种状态有个前提,就是在一个事务之内,当这个事务还没结束,这3种状态存在的,如果结束了,你没有3种状态之说。与hibernate的一级缓存有关,可以提高查询效率。 检查一下你的事物处理。
追问
这个session关闭应该是在起初开启session方法执行完毕时候自动关闭,而我这个查询方法在那个方法里面,个人觉得session是没有关闭。
大志若愚_zz
2013-10-31 · 超过42用户采纳过TA的回答
知道小有建树答主
回答量:115
采纳率:0%
帮助的人:109万
展开全部
应该是事务没有配置好。持久化对象放在session中的,如果在session关闭后修改了对象的属性,hibernate是不会自动持久化的,只有在session关闭之前,也就是事务结束之前的变动才会被自动持久化。
更多追问追答
追问
而至于事务能不能在dao开启我还没看,还有一个问题是session都由spring或者hibernate管理了,现在开发中没有人还写session。close这种语句吧?那这个session关闭应该是在起初开启session方法执行完毕时候自动关闭,而我这个查询方法在那个方法里面,个人觉得session是没有关闭。
追答
session是由hibernate管理,session默认是随事务关闭,如果没有事务,就会在最底层的方法结束时关闭。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友9c4aaf7
2013-10-31 · TA获得超过150个赞
知道小有建树答主
回答量:135
采纳率:0%
帮助的人:82.8万
展开全部
你这种想法不错,直接循环出来直接修改然后hibernate帮你马上更新……真的。http://zhidao.baidu.com/link?url=ZTInf5mcD23-Tr9yj-phICSPDGCGBIy6bU-jkJipO8jvRIW5M117ZeaZCEafJq3_kuyDaMeTsOokCNIq6I3sgq看看里面的看法,想来楼主应该就明白了
更多追问追答
追问
你这个路径下解释的是save和saveupdate区别,跟我这个持久化有关系吗。。。持久化对象不应该调用save或者update方法 hibernate应该自动最后给这些对象更新
追答
我建议你把要执行的代码放在与session相关的方法里面用saveorupdate看下?如果行的话,就是你的session已经关闭了,上面那个链接我想让你看的是二楼的说法也就是session相关的几种状态。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式