日期:2014-05-17  浏览次数:20628 次

hibernate如何更新少数字段
最近在改项目,把之前用dao写的换为hibernater,浏览器传来的属性,struts封装为对象(浏览器传的属性不是该对象的全部属性),然后将对象传给hibernater更新,对象中无值的怎么不更新呢
------解决方案--------------------
我们现在也有这个问题,我们事这样解决的:对于更新这样的实体,第一个是先查询这个实体,并且把它的属性放到隐含域中。第二个是在dao层先查询赋值在保存。

还有,就是我们遇到的一个问题,save之前个别属性缺少默认信息,我们提供了一个save方法,save之后返回这个实体。这个思路你也可以参考一下。
------解决方案--------------------
hibernate 也可以自己写 sql 语句啊

update 部分字段就好了吗
------解决方案--------------------
用updae更新需要先把数据查出来,然后更新bean再update(bean),如果更新部分字段你可以:
Query q = getSession().createQuery("update user u set u.name = ? where u.id = ?");
q.setParameter(0, "李四");
q.setParameter(1, 1);
q.executeUpdate();
------解决方案--------------------
要么把不更新的字段取出来放在隐藏域中传回去,
要么就自己写update语句更新某些字段