论坛首页 Java企业应用论坛

hibernate只保存部分字段问题,能否像ibatis中一样?

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

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