首先,我先介绍我的功能;其次,说明存在问题;再次,解决存在的问题。
1:项目中点击“保存”功能:
a):方法中有使用对象更改数据库中的数据,如:
String hql="update User uset u.status='" + 1 + "' where u.id=" + Id;
去调用this.createQuery(hql).executeUpdate();
b):紧接着调用另外的方法,在另外的方法中使用了HQL语句,如:
String hql="from User u where u.id="+id ;
去调用this.createQuery(hql).list();
2:在b)查询时问题出现了!!
问题:在b)中查询的结果并不是a)修改后的数据!而是,a)修改数据之前的数据。但是这不是我想要的!
我想要的是b)修改后的数据。这里的具体问题我还不是很明白,可能是没有提交事物吧!!
因为,当整个保存功能流程走完时,a)操作才会去修改数据库。
3:为了我能在b)查询数据库时得到a)修改操作后的数据,修改了程序:
方案一:因为项目中也可以使用sql语句进行更改数据库,所以将a)的操作改写成sql语句进行修改数据库时,在
b)出就可以到修改后的数据了。
方案二(感觉比方案一好):将a)操作修改为先执行执行selectHQL语句,
StringselectHQL="from User u where u.id="+id
去调用this.createQuery(hql).uniqueResult();
User us =(USer)this.createQuery(hql).uniqueResult()
us.setStatus("1");
执行Hibernate中的Update(Object entity);
这样操作以后,在b)出查询时就可以得到修改后的数据了。
以上问题解决方法都是在正式项目中的到的结果,但是,现在还是不是很清楚为什么会是这样!!有明白的希望解释一下,我等会也在研究研究!!谢谢知道的回复哦!!