主题:[讨论]关于hibernate中dynamic-update=true的问题
最近在使用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方法中经行判断。的确这些变通的方法都可行,但是我任然感觉不爽,因为以前我一直都不用多对一标签没有这个问题,希望那位高手可以给我一些建议,小弟不胜感激。[em10]
我一直希望能够找到一种方法实现修改的时候自动忽略NULL字段,因为在我使用hbm配置文件配置其中的<many-to-one><one-to-one>的时候,这些字段很有可能是Null(外键关联为空时),而且如果这个字段在数据库中又是不能为空的,那么势必在update()的时候就要报错(无法将NULL插入XX字段),于是我还必须在update()之前先对这些外键经行判断,如果为空还要手动对它们进行赋初值操作,或者也可以在pojo的get方法中经行判断。的确这些变通的方法都可行,但是我任然感觉不爽,因为以前我一直都不用多对一标签没有这个问题,希望那位高手可以给我一些建议,小弟不胜感激。[em10]