精华帖 (0) :: 良好帖 (0) :: 新手帖 (19) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-05-23
不要直接操作session(getSession),使用spring提供的getHibernateTemplate是最好的.
如果使用了,需要release |
|
返回顶楼 | |
发表时间:2011-05-23
回答主题:
HibernateTemplate.saveOrUpdate(Object instance) |
|
返回顶楼 | |
发表时间:2011-05-24
wenlongzh 写道 TbAds tbAds=tbAdsDAO.findById(id); if (sta==1) { tbAds.setState(0); tbAdsDAO.merge(tbAds); } else { tbAds.setState(1); tbAdsDAO.merge(tbAds); } if (sta==1) { String hqlString=" update TbAds set state = " + 0 + " where adsId = " + id; Query query=getSession().createQuery(hqlString); query.executeUpdate(); } else { String hqlString="update TbAds set state = " + 1 + " where adsId = " +id; Query query=getSession().createQuery(hqlString); query.executeUpdate(); } 你们是按代码行数算绩效的吗? 来我们公司吧,给你看一天旧代码,你就会见怪不怪了! |
|
返回顶楼 | |
发表时间:2011-05-24
yzz9i 写道 jk19910410 写道 将update好的对象HibernateTemplate.merge("TableName",entity);就行了,更新操作怎么能用find()方法呢?
对。我实现的功能是对每条信息的状态设置。 如果用的是merge, 它可以对单独的一条信息进行设置(如:运行、暂停 操作) 没问题,再进行另外一条信息操作时候就会 被锁住而报错.. 我也不知道是为什么.. 我就在业务层这么写的: TbAds tbAds=tbAdsDAO.findById(id); if (sta==1) { tbAds.setState(0); tbAdsDAO.merge(tbAds); } else { tbAds.setState(1); tbAdsDAO.merge(tbAds); } 之后我就把业务层调用该dao层方法 改在dao层写: if (sta==1) { String hqlString=" update TbAds set state = " + 0 + " where adsId = " + id; Query query=getSession().createQuery(hqlString); query.executeUpdate(); } else { String hqlString="update TbAds set state = " + 1 + " where adsId = " +id; Query query=getSession().createQuery(hqlString); query.executeUpdate(); } 结果可以对任意一条信息进行状态的设置了。。 (-- 为什么会被锁住 ?可能会是缓存的设置问题..? 是不是使用了事务读写缓存? |
|
返回顶楼 | |
发表时间:2011-06-30
最后修改:2011-06-30
this.getHibernateTemplate().execute(new HibernateCallback(){ public Object doInHibernate(Session session) throws HibernateException, SQLException { session.createQuery("update TbAds set st........").executeUpdate(); return null; }});
|
|
返回顶楼 | |
发表时间:2011-07-13
load出来后,直接更改属性就ok
因为有持久化状态 |
|
返回顶楼 | |