用HQL查询返回的对象不是持久化对象吗,那为什么我的程序里不自动给这个对象更新
比如我有个方法用的是HQL进行了查询并返回了list《Object》集合,返回后我对这个list遍历,并对每个对象进行了更改,比如setLastUpdate,setPro...
比如我有个方法用的是HQL进行了查询并返回了list《Object》集合,返回后我对这个list遍历,并对每个对象进行了更改,比如setLastUpdate,setProCode 等,问题是这种对象不是不用更新方法 ,最后hibernate应该对这些持久化对象更新啊,为什么我这里没有更新。或者要更新 得配置那些?之前认识只是以为只要用HQL查询出的都不用更新,现在发现还得配置其他什么东西吧?求大神解释啊
补充问题:如果用taskExecutor.execute(new ResolveFridgeTaskForEspThread(forcastAccordTitleId));如果开启事务后调用线程,那这个线程里还有事务吗?就是说这个线程还被上面方法体里的事务管理吗 展开
补充问题:如果用taskExecutor.execute(new ResolveFridgeTaskForEspThread(forcastAccordTitleId));如果开启事务后调用线程,那这个线程里还有事务吗?就是说这个线程还被上面方法体里的事务管理吗 展开
展开全部
应该是事务没有配置好。持久化对象放在session中的,如果在session关闭后修改了对象的属性,hibernate是不会自动持久化的,只有在session关闭之前,也就是事务结束之前的变动才会被自动持久化。
更多追问追答
追问
而至于事务能不能在dao开启我还没看,还有一个问题是session都由spring或者hibernate管理了,现在开发中没有人还写session。close这种语句吧?那这个session关闭应该是在起初开启session方法执行完毕时候自动关闭,而我这个查询方法在那个方法里面,个人觉得session是没有关闭。
追答
session是由hibernate管理,session默认是随事务关闭,如果没有事务,就会在最底层的方法结束时关闭。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你这种想法不错,直接循环出来直接修改然后hibernate帮你马上更新……真的。http://zhidao.baidu.com/link?url=ZTInf5mcD23-Tr9yj-phICSPDGCGBIy6bU-jkJipO8jvRIW5M117ZeaZCEafJq3_kuyDaMeTsOokCNIq6I3sgq看看里面的看法,想来楼主应该就明白了
更多追问追答
追问
你这个路径下解释的是save和saveupdate区别,跟我这个持久化有关系吗。。。持久化对象不应该调用save或者update方法 hibernate应该自动最后给这些对象更新
追答
我建议你把要执行的代码放在与session相关的方法里面用saveorupdate看下?如果行的话,就是你的session已经关闭了,上面那个链接我想让你看的是二楼的说法也就是session相关的几种状态。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询