浏览 7468 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-07-16
问题是:在web应用中的更新页面上,用户更改一个对象的某些字段,然后提交该页面,在struts的form中将提交数据组装成一个对象,由于某些字段在更新页面上没有出现(也没有隐藏域),所以这些字段都是类型默认值,然后后台保存该对象到数据库中,要求只更新用户修改的字段。 ibatis中可以通过配置文件设置什么情况下才更新该字段,如<isNotNull property="paperName"><![CDATA[ ,paperName=#paperName:VARCHAR# ]]></isNotNull>,这样就能避免那些在网页中没有提交的字段被更新到数据库中。 请问在hibernate中如何实现呢?应该不能在配置文件中硬性指定那些字段不更新,怎办?????? 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-07-16
dynamic-update="true"
|
|
返回顶楼 | |
发表时间:2007-07-16
或者 update=false
|
|
返回顶楼 | |
发表时间:2007-07-17
谢谢阿。不过如果设置dynamic-update="true"
是指当该类的字段发生变化时才更新,可是从网页提交过来的对象中许多没有赋值,是新对象的默认值,这样的话,数据库该字段会被更新成默认值了??例如,当修改用户注册信息时,假如只是在页面上显示了部分字段,而还有字段在页面中根本没显示(也不在隐藏域中),那么经过struts把用户提交的更新数据组成一个对象提交时,那些没有出现的字段值就是新建对象的默认值,和数据库中相应字段不同时仍会修改该字段的值。 philip_kissme说的update=false是指某个字段用不更新是吗?如果一个对象,在某个页面上需要更新某两个字段,其余不变,而在另一个页面上,需要更新别的字段,其余字段不定,这种情况下字段在不同场合下需要或者不需要更新,怎么办呢?在ibatis中可以由程序员在Dao层控制一下,不想更新的字段设为某个值就行了,在sql配置文件中写入过滤条件即可控制哪些字段需要修改。hibernate如何做呢? |
|
返回顶楼 | |
发表时间:2007-07-18
先按照主键load该对象,然后再从页面取值更新相应字段
|
|
返回顶楼 | |
发表时间:2007-07-18
Session.merge()方法?
|
|
返回顶楼 | |
发表时间:2007-08-30
一般不推荐直接更新!
|
|
返回顶楼 | |