首先,要想使用数据库中配置的默认值就必须不让hibernate覆盖了默认值,需要配置property insert="false" update="false",告诉hibernate不对该属性执行insert、update操作,这要就不会覆盖我们在数据库中配置的默认值了。除此之外,我们还需要配置hibernate对该表的操作,dynamic-insert="true" dynamic-update="true",

实现动态的向数据库中插入值,只insert,update非空的属性值,对于NULL的属性值不插入数据库,这要就可以避免NULL覆盖数据库表中设置的默认值。

 <class name="com.tea.lms.model.UserCourse" table="t_user_course"
catalog="lms" lazy="false" dynamic-insert="true" dynamic-update="true">
<!-- 这里设置dynamic-insert="true" dynamic-update="true" 是hibernate在插入数据时只会插入非NULL值,空值不会插入数据库中 -->
<id name="id" type="long">
<column name="id" not-null="true" length="20"></column>
<generator class="native"></generator>
</id>
<many-to-one name="user" class="acc.model.User" cascade="delete"
lazy="false">
<column name="user_id"></column>
</many-to-one>
<many-to-one name="course" class="com.tea.lms.model.Course"
cascade="delete" lazy="false">
<column name="course_id"></column>
</many-to-one>
<many-to-one name="lastUserItem" class="com.tea.lms.model.UserItem"
cascade="all" lazy="false">
<column name="last_user_sco_id"></column>
</many-to-one>
<property name="regTime" not-null="true" type="timestamp"
insert="false" update="false"> <!-- java类型,insert、update都设置为false,使hibernate不会覆盖默认值 -->
<column name="reg_time"></column>
<type name="timestamp"></type> <!-- sql类型 -->
</property>
<property name="score" type="int">
<column name="score" length="11"></column>
</property>
<property name="pass" type="int">
<column name="pass" length="11"></column>
</property>
</class>

hibernate配置好后还没有完,我们还需在mysql中相关配置,处理配置timestamp列的默认值为CURRENT_TIMESTAMP还不行。由于mysql新版本中对默认值的插入进行了新规定,只有当当前列约束非空,并且没有插入值时才采用默认值进行插入。所有我们还需要配置timestamp列约束NOT NULL

完工。

hibernate设置mysql的timestamp默认值技巧的更多相关文章

  1. MySQL设置当前时间为默认值的方法

    方法一.是用alert table语句: 复制代码代码如下: use test_db1; create table test_ta1( id mediumint(8) unsigned not nul ...

  2. 解决:mysql5.7 timestamp默认值0000-00-00 00:00:00 报错

    解决:mysql5.7 timestamp默认值0000-00-00 00:00:00 报错 学习了:https://www.cnblogs.com/cnhkzyy/p/9119339.html se ...

  3. input文本框设置和移除默认值

    input文本框设置和移除默认值 这里想实现的效果是:设置和移除文本框默认值,如下图鼠标放到文本框中的时候,灰字消失. 1.可以用简单的方式,就是给input文本框加上onfocus属性,如下代码: ...

  4. PHP——0128练习相关3——设置文本域的默认值

    都知道文本框的的默认值只要设置value属性即可但是文本域是没有value属性的要设置文本域的默认值只要<textarea>默认值</textarea>即可简单吧,呵呵..

  5. 设置Input标签Date默认值为当前时间

    需求:想设置Imput标签Date默认值为当前时间,通过JavaScript实现. <html> ...... <body> <input type="date ...

  6. 关于mysql字段时间类型timestamp默认值为当前时间问题

    今天把应用部署到AWS上发现后台修改内容提交后程序报错,经过排查发现是更新数据的时候,有张数据表中的一个timestamp类型的字段默认值变成了"0000-00-00 00:00:00.00 ...

  7. 【转】MySQL datetime数据类型设置当前时间为默认值

    转自http://blog.csdn.net/u014694759/article/details/30295285 方法一: MySQL目前不支持列的Default 为函数的形式,如达到你某列的默认 ...

  8. mysql升级到5.7时间戳(timestamp)默认值报错

    原文:mysql升级到5.7时间戳报错 往数据库里创建新表的时候报错: [Err] 1067 - Invalid default value for 'updateTime' DROP TABLE I ...

  9. Mysql 修改字段默认值

    环境:MySQL 5.7.13 问题描述:建表的时候,users_info表的role_id字段没有默认值,后期发现注册的时候,需要提供给用户一个默认角色,也就是给role_id字段一个默认值. 当前 ...

随机推荐

  1. tomcat6-7配置管理用户

    tomcat6: <?xml version='1.0' encoding='utf-8'?> <tomcat-users>   <role rolename=" ...

  2. ubuntukylin提取root权限及mongoDB部署

    UbuntuKylin下安装Mongodb (参照UbuntuKylin下安装Mongodb一文安装成功后的心得) 1.官网下载安装包  http://www.mongodb.org/dr/fastd ...

  3. Linux协议栈代码阅读笔记(二)网络接口的配置

    Linux协议栈代码阅读笔记(二)网络接口的配置 (基于linux-2.6.11) (一)用户态通过C库函数ioctl进行网络接口的配置 例如,知名的ifconfig程序,就是通过C库函数sys_io ...

  4. jquery.validate.js 应用示例

    今天发现了jQuery一个很强大的验证表单插件(jquery.validate.js 下载地址:http://bassistance.de/jquery-plugins/jquery-plugin-v ...

  5. mysql之union

    今天来写写union的用法及一些需要注意的. union:联合的意思,即把两次或多次查询结果合并起来. 要求:两次查询的列数必须一致 推荐:列的类型可以不一样,但推荐查询的每一列,想对应的类型以一样 ...

  6. 英语阅读积累<一>

    Passage 1.Woodpecker    惹treat or trick There are many apple trees in a garden.  They’re good friend ...

  7. Android获唯一标识

    Android开发中有时候因业务需要客户端要产生一个唯一的标识符使服务器能识别某台Android设备,目前一般使用三种标识符分别为 DeviceId . AndroidId . MAC地址 . 获取D ...

  8. setsockopt()使用方法(參数具体说明)

    int setsockopt(SOCKET s,int level,int optname,const char* optval,int optlen); s(套接字): 指向一个打开的套接口描写叙述 ...

  9. iOS开发——UI篇OC篇&UITableView多项选择

    UITableView多项选择 自定义cell和取到相应的cell就行了 TableViewCell.h #import <UIKit/UIKit.h> @interface TableV ...

  10. Firefly distributed模块的原理与twisted中PB远程调用协议

    这些天断断续续在看Firefly, 看了一下distributed模块的设计,其实就是使用的twisted.spread.pb觉得以后要是想用Firefly有必要了解一下twisted, 所以在网上查 ...