今天在做一个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

<hibernate-mapping>
<class name="com.tom.hibernate.xxxx" table="xxx schema="xxx" dynamic-insert="true" dynamic-update="true">

<property name="entryDate" type="java.util.Date">
<column name="ENTRY_DATE" length="7" not-null="false"/>
</property>

用拿来主义)贴过来一个这个接口说明:

下面是有关其它配置的说明

Hibernate允许我们在映射文件里控制insert和update语句的内容.比如在映射文件中<property 元素中的update属性设置成为false,那么这个字段,将不被包括在基本的update语句中,修改的时候,将不包括这个字段了.insert同理.dynamic动态SQL语句的配置也是很常用的.下面介绍配置SQL语句的具体属性:
1)<property>元素 insert属性:设置为false,在insert语句中不包含这个字段,表示永远不会被插入,默认true
2)<property>元素 update属性:设置为false,在update语句中不包含这个字段,表示永远不会被修改,默认true
3)<class>元素 mutable属性:设置为false就是把所有的<property>元素的update属性设置为了false,说明这个对象不会被更新,默认true
4)<property>元素 dynamic-insert属性:设置为true,表示insert对象的时候,生成动态的insert语句,如果这个字段的值是null就不会加入到insert语句当中.默认false
5)<property>元素 dynamic-update属性,设置为true,表示update对象的时候,生成动态的update语句,如果这个字段的值是null就不会被加入到update语句中,默认false
6)<class>元素 dynamic-insert属性:设置为true,表示把所有的<property>元素的dynamic-insert属性设置为true,默认false
7)<class>元素 dynamic-update属性:设置为true,表示把所有的<property>元素的dynamic-update属性设置为true,默认false

Hibernate生成动态SQL语句的消耗的系统资源(比如CPU,内存等)是很小的,所以不会影响到系统的性能,如果表中包含N多字段,建议把dynamic-update属性和insert属性设置为true,这样在插入和修改数据的时候,语句中只包括要插入或者修改的字段.可以节省SQL语句的执行时间,提高程序的运行效率.

另外一种做法请看如下配置:

Hibernate <property>配置
<property name="name" unique="true" not-null="true" update="false" length="25"/>

<property>元素 insert属性:设置为false,在insert语句中不包含这个字段,表示永远不会被插入。默认true。

<property>元素 update属性:设置为false,在update语句中不包含这个字段,表示永远不会被修改。默认true。

<class>元素 mutable属性:设置为false,就是把所有的<property>元素的update属性设置为了false,说明这个对象不会被更新。默认true。

<property>元素 dynamic-insert属性:设置为true,表示insert对象的时候,生成动态的insert语句,如果这个字段的值是null就不会加入到insert语句当中。默认false

<property>元素 dynamic-update属性:设置为true,表示update对象的时候,生成动态的update语句,如果这个字段的值是null就不会被加入到update语句中。默认false

<class>元素 dynamic-insert属性:设置为true,表示把所有的<property>元素的dynamic-insert属性设置为true。默认false

<class>元素 dynamic-update属性:设置为true,表示把所有的<property>元素的dynamic-update属性设置为true。默认false

dynamic-update,如果一个表字段比较多,并且经常只是更新一条记录的一两个字段,避免了过多无用的sql语句,动态更新会更有效。应用程序会增加工作量,但是数据库会减少工作量。在插入和修改数据的时候,语句中只包括要插入或者修改的字段,可以节省SQL语句的执行时间,提高程序的运行效率。
本篇文章来源于 Linux公社网站(www.linuxidc.com)  原文链接:http://www.linuxidc.com/Linux/2012-11/74542.htm

dynamic-insert=true dynamic-update=true,插入默认值的情况相关推荐

  1. 表的插入、更新、删除、合并操作_9_插入默认值

    插入默认值 需求描述 需求:指定dept表loc字段的默认值是Beijing,并向该表中插入部门编号为50,部门名称为Production的数据. 解决方法:这里需要DDL的里知识,即对表dept在l ...

  2. ORA-01400: cannot insert NULL into | 通过SQL链接服务器 往Oracle库的表中 插入默认值问题

    ORACLE表中字段设置为 不为空,有设置默认值, 用sql数据库链接会提示"ORA-01400: cannot insert NULL into 表.... 解决方案: 把字段的 ON N ...

  3. sqlloader 插入默认值

    在使用sqlloader的过程中,有这样一个需求,就是表中的某列需要一个默认值,例如c1列为varchar2类型,插入的时候默认插入gg字符. 网上找了一些解决办法,发现不行,例如:c1 'gg',但 ...

  4. mysql 事务 返回插入的值_Mysql同一个事务内记录成功插入后查询不出来

    背景: 1)mysql:Ver 14.12 Distrib 5.0.45, for Win32 (ia32) 2)mysql odbc驱动:3.51.22 3)vs2005 4)客户端用ado,odb ...

  5. MySQL 字段默认值该如何设置

    MySQL 字段默认值该如何设置 前言: 在 MySQL 中,我们可以为表字段设置默认值,在表中插入一条新记录时,如果没有为某个字段赋值,系统就会自动为这个字段插入默认值.关于默认值,有些知识还是需要 ...

  6. java 字段为空设置默认值_java – 当字段为空时使用MyBatis添加默认值

    当我的字段为空时,我想从数据库中插入默认值.我使用的是Oracle数据库. CREATE TABLE "EMPLOYEE" ("COL1" VARCHAR2(8 ...

  7. [转载] java给对象中的包装类设置默认值

    参考链接: Java中的对象类Object 处理方法如下 主要适用于,对象中使用了包装类,但是不能给null需要有默认值的情况 /** * 处理对象中包装类,因为快捷签没有用包装类 * * @para ...

  8. oracle 添加默认值列,Oracle 11g增加列,并带默认值的新特性

    永久链接:http://www.ixdba.com/html/y2007/m08/159-oracle11g-add-column.html 老和尚在他的blog中描述了了这个问题,我这里做一个详细的 ...

  9. avue select 默认值设置

    在使用avue select选择框的时候,经常会碰到要设置默认值的情况 但是,按照官网文档上的操作去设置,却不生效 那么该如何设置呢? 我这提供一种方式进行参考 1.添加下拉内容 { label: & ...

最新文章

  1. ORB_SLAM2局部建图线程
  2. 在github上创建自己的第一个项目仓库实录
  3. Cisco交换机密码配置整理
  4. Http的请求协议请求行介绍
  5. python编写ATM类_Python中编写类的各种技巧和方法
  6. git使用stash存储相关操作
  7. [swift] LeetCode 234. Palindrome Linked List
  8. pandas的dataframe
  9. maven 配置远程仓库服务器密码
  10. 最新2022亲测可用的免费google翻译api
  11. oracle练习(mldn视频)二
  12. Oracle | awr报告分析
  13. ASUS笔记本型号命名
  14. 非平衡电桥电阻计算_用非平衡电桥如何测量电阻_非平衡电桥测量电阻详解
  15. 百度蜘蛛IP功能说明初稿
  16. 数字藏品NFT用的国内联盟链有哪些?
  17. 一些西安附近的旅游信息
  18. matlab lcl滤波器,LCL滤波器参数性能的比较
  19. STEP2——《数据分析:企业的贤内助》重点摘要笔记(二)——数据获取资源...
  20. 普通路由器改4g路由器_4G工业路由器将加速工业物联网发展进程

热门文章

  1. VTK:隐式平面小部件用法实战
  2. wxWidgets:wxProcess类用法
  3. wxWidgets:wxFileCtrl类用法
  4. boost::shared_mutex相关的测试程序
  5. BOOST_MP11_VERSION宏用法的测试程序
  6. boost::mp11::mp_join相关用法的测试程序
  7. boost::iostreams::newline用法的测试程序
  8. boost::graph模块实现分布式压缩稀疏行图类型的测试
  9. boost::geometry::correct用法的测试程序
  10. boost::fusion::make_fused_function_object用法的测试程序