最近在使用Hibernate的时候发现一个问题,当我编写映射文件时,如果我在<class>中使用了dynamic-update=true时,它起到的作用是? 1)只修改改动过的字段 还是 2)只修改不为Null的字段 我在网上找到这两种不同的说法,但是经过我的反复测试,我觉得应该是答案应该是前者。但是问题也随之而来,虽然我能够修改改动过的字段,但是也只在某些特殊的情况下才行,比如说,我先session.load()然后再session.update(),加入这两个在同一个session中才行,不然它还是只会全部修改。但是我使用dynamic-update=true的初衷是希望它能够实现2的效果,所以说测试的结果令人失望。
我一直希望能够找到一种方法实现修改的时候自动忽略NULL字段,因为在我使用hbm配置文件配置其中的<many-to-one><one-to-one>的时候,这些字段很有可能是Null(外键关联为空时),而且如果这个字段在数据库中又是不能为空的,那么势必在update()的时候就要报错(无法将NULL插入XX字段),于是我还必须在update()之前先对这些外键经行判断,如果为空还要手动对它们进行赋初值操作,或者也可以在pojo的get方法中经行判断。的确这些变通的方法都可行,但是我任然感觉不爽,因为以前我一直都不用多对一标签没有这个问题,希望那位高手可以给我一些建议,小弟不胜感激。
我一直希望能够找到一种方法实现修改的时候自动忽略NULL字段,因为在我使用hbm配置文件配置其中的<many-to-one><one-to-one>的时候,这些字段很有可能是Null(外键关联为空时),而且如果这个字段在数据库中又是不能为空的,那么势必在update()的时候就要报错(无法将NULL插入XX字段),于是我还必须在update()之前先对这些外键经行判断,如果为空还要手动对它们进行赋初值操作,或者也可以在pojo的get方法中经行判断。的确这些变通的方法都可行,但是我任然感觉不爽,因为以前我一直都不用多对一标签没有这个问题,希望那位高手可以给我一些建议,小弟不胜感激。
解决方案 »
- IBATIS的resultClass问题
- web里面,什么是无状态bean什么是有状态bean
- 急急急,spring、struts2+jdbc 事务不回滚
- servlet的filter如何获得spring定义的对象啊。。
- 一个关于层的问题……
- 请问用Tomcat做Web Server如何能统计出一些静态资源的访问情况?
- 用JBUILDER WEBLOGIC ORICAL 开发但是是用STRUTS软件,不知道可不可以
- 如何实现自动填写表单?
- 请教简单的JAVA语句(extends Applet implements ActionListener)
- 如何编辑“布署文件”,更方便一些,每次都手写web.xml,好麻烦又容易出错。我做j2ee
- 急求SQL语句动态赋值问题,,救命啊,,谢谢了 先
- Spring能开发web application吗?
1.调用session.load()方法加载该对象,修改相应字段.如:
Session session = openSession();
User user = (User)session.load(User.class,user.getId());
user.setName("张三");
session.flush();
OK,自动更新,并且只更新那些修改过的字段.只不过这样会执行多一条SQL语句,导致性能下降??呵呵...
直接传个id和修改某个字段后,hibernate是不会帮你自动更新那些修改过的字段的.它似乎还没达到那个智能的境界.
2.写HQL,手动操作.直接,明了.呵呵..
拿分.