hibernate设置mysql的timestamp默认值技巧
2014-06-01 14:41
218 查看
首先,要想使用数据库中配置的默认值就必须不让hibernate覆盖了默认值,需要配置property insert="false" update="false",告诉hibernate不对该属性执行insert、update操作,这要就不会覆盖我们在数据库中配置的默认值了。除此之外,我们还需要配置hibernate对该表的操作,dynamic-insert="true" dynamic-update="true",
实现动态的向数据库中插入值,只insert,update非空的属性值,对于NULL的属性值不插入数据库,这要就可以避免NULL覆盖数据库表中设置的默认值。
hibernate配置好后还没有完,我们还需在mysql中相关配置,处理配置timestamp列的默认值为CURRENT_TIMESTAMP还不行。由于mysql新版本中对默认值的插入进行了新规定,只有当当前列约束非空,并且没有插入值时才采用默认值进行插入。所有我们还需要配置timestamp列约束NOT NULL。
完工。
实现动态的向数据库中插入值,只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。
完工。
相关文章推荐
- MySQL中TIMESTAMP类型可设置默认值为CURRENT_TIMESTAMP
- MySql折腾小记二:text/blog类型不允许设置默认值,不允许存在两个CURRENT_TIMESTAMP
- MySql折腾小记二:text/blog类型不允许设置默认值,不允许存在两个CURRENT_TIMESTAMP
- MySQL命令及使用技巧以及当前时间字段默认值设置
- MySql折腾小记二:text/blog类型不允许设置默认值,不允许存在两个CURRENT_TIMESTAMP
- mysql 字段timestamp设置默认值问题
- mysql中TIMESTAMP设置默认值的灵活运用
- MySql折腾小记二:text/blog类型不允许设置默认值,不允许存在两个CURRENT_TIMESTAMP
- mysql建表设置两个默认CURRENT_TIMESTAMP的技巧
- MySql折腾小记二:text/blog类型不允许设置默认值,不允许存在两个CURRENT_TIMESTAMP
- MySQL 日期类型及默认设置 (除timestamp类型外,系统不支持其它时间类型字段设置默认值)
- Hibernate MySQL设置 timestamp 为插入时间
- mysql建表设置两个默认CURRENT_TIMESTAMP的技巧
- mysql中TIMESTAMP设置默认值的灵活运用
- 解决mysql datetime 类型设置默认值的方法,即mysql TIMESTAMP(时间戳)详解
- MySQL的DATETIME, TIMESTAMP类型列的默认值
- MySQL设置当前时间为默认值的方法
- Hibernate连接数据库超时设置autoReconnect=true(Mysql)
- MySQL datetime数据类型设置当前时间为默认值
- mysql 表增加一个字段并设置默认值