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

    完工。

  • 相关阅读:
    75. Sort Colors
    101. Symmetric Tree
    121. Best Time to Buy and Sell Stock
    136. Single Number
    104. Maximum Depth of Binary Tree
    70. Climbing Stairs
    64. Minimum Path Sum
    62. Unique Paths
    css知识点3
    css知识点2
  • 原文地址:https://www.cnblogs.com/zj62/p/3763375.html
Copyright © 2011-2022 走看看