在做一个OA的简单增删除该查的时候,有一个时间类型的字段(数据插入时间),本身想着,这个字段直接中Oracle数据库设置一个Defa
说明:
今天在做一个OA的简单增删除该查的时候,有一个时间类型的字段(数据插入时间),本身想着,这个字段直接中Oracle数据库设置一个Default Value ,就不用再前台install这个字段的值了,但是后时间操作中发现插入的时候如果不通过hql去写代码的话,而是通过hibernate的接口getHibernateTemplate().saveOrUpdate(entity);的话,就出现问题,插入的时间类型字段的值是null,tmd有点郁闷,不好意思又说脏话了,也是当时头有点昏,呵呵。后来,一想如果通过getHibernateTemplate().saveOrUpdate(entity);这个借口,如果没有设置值,那么就会设置null,所有出现了这个问题。查看了下hibernate的接口文档,一看,原来是这样的。
需要添加下面的参数在*.hbm.xml中class节点设置,如下
一是将dynamic-insert设置为true
二是将对应字段的属性设置not-null为false
dynamic-insert="true" dynamic-update="true">
not-null="false"/>
用拿来主义)贴过来一个这个接口说明:
下面是有关其它配置的说明
Hibernate允许我们在映射文件里控制insert和update语句的内容.比如在映射文件中 1)元素 insert属性:设置为false,在insert语句中不包含这个字段,表示永远不会被插入,默认true
2)元素 update属性:设置为false,在update语句中不包含这个字段,表示永远不会被修改,默认true
3)元素 mutable属性:设置为false就是把所有的元素的update属性设置为了false,说明这个对象不会被更新,默认true
4)元素 dynamic-insert属性:设置为true,表示insert对象的时候,生成动态的insert语句,如果这个字段的值是null就不会加入到insert语句当中.默认false
5)元素 dynamic-update属性,设置为true,表示update对象的时候,生成动态的update语句,如果这个字段的值是null就不会被加入到update语句中,默认false
6)元素 dynamic-insert属性:设置为true,表示把所有的元素的dynamic-insert属性设置为true,默认false
7)元素 dynamic-update属性:设置为true,表示把所有的元素的dynamic-update属性设置为true,默认false
Hibernate生成动态SQL语句的消耗的系统资源(比如CPU,内存等)是很小的,所以不会影响到系统的性能,如果表中包含N多字段,建议把dynamic-update属性和insert属性设置为true,这样在插入和修改数据的时候,语句中只包括要插入或者修改的字段.可以节省SQL语句的执行时间,提高程序的运行效率.
另外一种做法请看如下配置:
Hibernate
配置
元素 insert属性:设置为false,在insert语句中不包含这个字段,表示永远不会被插入。默认true。
元素 update属性:设置为false,在update语句中不包含这个字段,表示永远不会被修改。默认true。
元素 mutable属性:设置为false,就是把所有的元素的update属性设置为了false,说明这个对象不会被更新。默认true。
元素 dynamic-insert属性:设置为true,表示insert对象的时候,生成动态的insert语句,如果这个字段的值是null就不会加入到insert语句当中。默认false
元素 dynamic-update属性:设置为true,表示update对象的时候,生成动态的update语句,如果这个字段的值是null就不会被加入到update语句中。默认false
元素 dynamic-insert属性:设置为true,表示把所有的元素的dynamic-insert属性设置为true。默认false
元素 dynamic-update属性:设置为true,表示把所有的元素的dynamic-update属性设置为true。默认false
dynamic-update,,如果一个表字段比较多,并且经常只是更新一条记录的一两个字段,避免了过多无用的sql语句,动态更新会更有效。应用程序会增加工作量,但是数据库会减少工作量。在插入和修改数据的时候,语句中只包括要插入或者修改的字段,可以节省SQL语句的执行时间,提高程序的运行效率。
Stellungnahme:Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn