zoukankan      html  css  js  c++  java
  • hibernate设置mysql的timestamp默认值技巧

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

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

     1 <class name="com.tea.lms.model.UserCourse" table="t_user_course"
     2         catalog="lms" lazy="false" dynamic-insert="true" dynamic-update="true">
     3         <!-- 这里设置dynamic-insert="true" dynamic-update="true" 是hibernate在插入数据时只会插入非NULL值,空值不会插入数据库中 -->
     4         <id name="id" type="long"> 
     5             <column name="id" not-null="true" length="20"></column>
     6             <generator class="native"></generator>
     7         </id>
     8         <many-to-one name="user" class="acc.model.User" cascade="delete"
     9             lazy="false">
    10             <column name="user_id"></column>
    11         </many-to-one>
    12         <many-to-one name="course" class="com.tea.lms.model.Course"
    13             cascade="delete" lazy="false">
    14             <column name="course_id"></column>
    15         </many-to-one>
    16         <many-to-one name="lastUserItem" class="com.tea.lms.model.UserItem"
    17             cascade="all" lazy="false">
    18             <column name="last_user_sco_id"></column>
    19         </many-to-one>
    20         <property name="regTime" not-null="true" type="timestamp"
    21             insert="false" update="false"> <!-- java类型,insert、update都设置为false,使hibernate不会覆盖默认值 -->
    22             <column name="reg_time"></column>
    23             <type name="timestamp"></type> <!-- sql类型 -->
    24         </property>
    25         <property name="score" type="int">
    26             <column name="score" length="11"></column>
    27         </property>
    28         <property name="pass" type="int">
    29             <column name="pass" length="11"></column>
    30         </property>
    31     </class>

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

    完工。

  • 相关阅读:
    sharepoint 2007 升级到 sharepoint 2013
    sharepoint 2010中启用RBS及所遇问题
    sharepoint 读取文件夹中所有的数据
    脚本设置ip&自动获取ip
    window 2008 r2 每隔一小时都要重启一次解决办法
    sharepoint 弹出框
    sharepoint powershell 根据报错的GUID查询错误
    java中switch选择结构
    mysql查看表字段相关信息
    mac系统 -postman发送http请求
  • 原文地址:https://www.cnblogs.com/zj62/p/3763375.html
Copyright © 2011-2022 走看看