hibernate设置mysql的timestamp默认值技巧
首先,要想使用数据库中配置的默认值就必须不让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默认值技巧的更多相关文章
- MySQL设置当前时间为默认值的方法
方法一.是用alert table语句: 复制代码代码如下: use test_db1; create table test_ta1( id mediumint(8) unsigned not nul ...
- 解决: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 ...
- input文本框设置和移除默认值
input文本框设置和移除默认值 这里想实现的效果是:设置和移除文本框默认值,如下图鼠标放到文本框中的时候,灰字消失. 1.可以用简单的方式,就是给input文本框加上onfocus属性,如下代码: ...
- PHP——0128练习相关3——设置文本域的默认值
都知道文本框的的默认值只要设置value属性即可但是文本域是没有value属性的要设置文本域的默认值只要<textarea>默认值</textarea>即可简单吧,呵呵..
- 设置Input标签Date默认值为当前时间
需求:想设置Imput标签Date默认值为当前时间,通过JavaScript实现. <html> ...... <body> <input type="date ...
- 关于mysql字段时间类型timestamp默认值为当前时间问题
今天把应用部署到AWS上发现后台修改内容提交后程序报错,经过排查发现是更新数据的时候,有张数据表中的一个timestamp类型的字段默认值变成了"0000-00-00 00:00:00.00 ...
- 【转】MySQL datetime数据类型设置当前时间为默认值
转自http://blog.csdn.net/u014694759/article/details/30295285 方法一: MySQL目前不支持列的Default 为函数的形式,如达到你某列的默认 ...
- mysql升级到5.7时间戳(timestamp)默认值报错
原文:mysql升级到5.7时间戳报错 往数据库里创建新表的时候报错: [Err] 1067 - Invalid default value for 'updateTime' DROP TABLE I ...
- Mysql 修改字段默认值
环境:MySQL 5.7.13 问题描述:建表的时候,users_info表的role_id字段没有默认值,后期发现注册的时候,需要提供给用户一个默认角色,也就是给role_id字段一个默认值. 当前 ...
随机推荐
- SQL Where语句中AND与OR的计算次序 .
AND 用在where子句中,用来指示检索满足所有给定条件的行,而OR用在where子句中,用来指示检索匹配任一给定条件的行. Where子句中可包含任意数目的AND和OR操作符号,但是要注意在SQL ...
- python 调用函数
Python内置了很多有用的函数,我们可以直接调用. 要调用一个函数,需要知道函数的名称和参数,比如求绝对值的函数abs,只有一个参数.可以直接从Python的官方网站查看文档: http://doc ...
- web开发工具类
1.日期工具类 import java.text.SimpleDateFormat; import java.util.Date; public class DateUtil { public sta ...
- PTA 5-14 电话聊天狂人 (25分)
给定大量手机用户通话记录,找出其中通话次数最多的聊天狂人. 输入格式: 输入首先给出正整数NN(\le 10^5≤105),为通话记录条数.随后NN行,每行给出一条通话记录.简单起见,这里只列出 ...
- 【Away3D代码解读】其它一些的记录(持续更新)
查看当前正在使用的AGAL代码可以在程序开始时添加下面的代码,AGAL代码会被trace出来: Debug.active = true; 具体的输出是在MaterialPassBase类的update ...
- 【Stage3D学习笔记续】山寨Starling(七):一般优化方法简介及混合模式
关于事件的优化: 遍历注册的事件由foreach改变为fori,在大量数据遍历时会有提升: 事件池优化: 所有的事件都使用一个对象池进行保存,而不是使用到时进行创建,使用EventDispatcher ...
- 【Stage3D学习笔记续】山寨Starling(一):从事件说起
我在GitHub上新开了一个项目:https://github.com/hammerc/hammerc-study-Stage3D 山寨的Starling版本我取名叫做Scorpio2D,以后的笔记中 ...
- POJ3273-Monthly Expense (最小化最大值)
题目链接:cid=80117#problem/E">click here~~ [题目大意] 农夫JF在n天中每天的花费,要求把这n天分作m组.每组的天数必定是连续的.要求分得各组的花费 ...
- 解读BOM与COM
概念: 1.BOM(Browser Object Model): 浏览器对象模型,从名字上就能知道它和浏览器关系密切. 浏览器的非常多行为是通过JavaScript控制的.比如打开新窗体.打开关闭标签 ...
- CDOJ 1157 数列(seq) 分块+线段树
数列(seq) Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/problem/show/1157 Desc ...