论坛首页 Java企业应用论坛

hibernate 中怎么执行update操作

浏览 8947 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (19) :: 隐藏帖 (0)
作者 正文
   发表时间:2011-05-23  
不要直接操作session(getSession),使用spring提供的getHibernateTemplate是最好的.
如果使用了,需要release
0 请登录后投票
   发表时间:2011-05-23  
回答主题:
HibernateTemplate.saveOrUpdate(Object instance)
0 请登录后投票
   发表时间: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();
		}


你们是按代码行数算绩效的吗?


来我们公司吧,给你看一天旧代码,你就会见怪不怪了!
0 请登录后投票
   发表时间: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();
		}

结果可以对任意一条信息进行状态的设置了。。
(--
为什么会被锁住 ?可能会是缓存的设置问题..?










是不是使用了事务读写缓存?
0 请登录后投票
   发表时间: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;
   }}); 

 

0 请登录后投票
   发表时间:2011-07-13  
load出来后,直接更改属性就ok

因为有持久化状态
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics