Hibernate持久化问题

首先,我先介绍我的功能;其次,说明存在问题;再次,解决存在的问题。

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)出查询时就可以得到修改后的数据了。


以上问题解决方法都是在正式项目中的到的结果,但是,现在还是不是很清楚为什么会是这样!!有明白的希望解释一下,我等会也在研究研究!!谢谢知道的回复哦!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值