关于hibernate session.flush()的一个问题
Queryquery=session.createQuery("fromTblUserwherenamelike?");query.setParameter(0,"%je...
Query query = session.createQuery("from TblUser where name like ?");
query.setParameter(0, "%jesse%");
List list = query.list();
Iterator<TblUser>users = list.iterator();
while(users.hasNext()){
user = users.next();
user.setName("wangming");
session.flush();
session.evict(user);
}
session.getTransaction().commit();
那句话是update的,工作原理是什么。 展开
query.setParameter(0, "%jesse%");
List list = query.list();
Iterator<TblUser>users = list.iterator();
while(users.hasNext()){
user = users.next();
user.setName("wangming");
session.flush();
session.evict(user);
}
session.getTransaction().commit();
那句话是update的,工作原理是什么。 展开
4个回答
展开全部
当users通过query从DB里拿出来以后, 它里面的每一个user都是persistent的.
直接给一个persistent的对象赋值user.setName("wangming"); 那么在transaction commit的时候,就会完成update的动作.
在这里, 代码跑到session.flush(); 相当于执行一条update 的SQL, 而直到session.getTransaction().commit(); 才会真正把结果提交到数据库里面去.
直接给一个persistent的对象赋值user.setName("wangming"); 那么在transaction commit的时候,就会完成update的动作.
在这里, 代码跑到session.flush(); 相当于执行一条update 的SQL, 而直到session.getTransaction().commit(); 才会真正把结果提交到数据库里面去.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
flush,但是一般不这样用,太影响性能了,并且这是要定期清除的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
通过List list = query.list();加载满足查询条件的对象集合到一级缓存中,当在一级缓存中进行加载对象的属性修改,在你调用session.flush()的时候,会同步一级缓存的对象的状态到数据库中。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询