Hibernate更新是否处理默认的当前时间戳SQL子句?
我有一个MySQL表,有三列:Hibernate更新是否处理默认的当前时间戳SQL子句?,hibernate,mysql-connector,Hibernate,Mysql Connector,我有一个MySQL表,有三列:IDint(10)、status varchar(10)、created_on timestamp NULL DEFAULT CURRENT_timestamp。当我尝试使用insert INTO EMPLOYEE(status)VALUES('STATUS1')子句在表中手动插入记录时,它也会正确地填充created\u on列的值 但是,当我尝试通过Hibernate插入记录时,上的创建列没有填充。它保持为空。我知道我的专栏目前允许null,因为我没有明确宣布它
IDint(10)、status varchar(10)、created_on timestamp NULL DEFAULT CURRENT_timestamp
。当我尝试使用insert INTO EMPLOYEE(status)VALUES('STATUS1')
子句在表中手动插入记录时,它也会正确地填充created\u on
列的值
但是,当我尝试通过Hibernate插入记录时,上的创建列没有填充。它保持为空。我知道我的专栏目前允许null,因为我没有明确宣布它不为null,但我的问题更多地集中在hibernate方面
如何确保在
上创建的列像我的手册插入
子句那样自动填充?或者这就是hibernate设计的工作方式
以下是我的hibernate代码片段:
Transaction tx = session.beginTransaction();
Employee employee = new Employee(status);
session.save(employee);
tx.commit();
下面是Hibernate配置
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="Employee" table="EMPLOYEE">
<meta attribute="class-description">
This class contains the employee detail.
</meta>
<id name="id" type="int" column="id">
<generator class="native"/>
</id>
<property name="status" column="status" type="string"/>
<property name="created_on" column="created_on" type="date"/>
</class>
</hibernate-mapping>
此类包含员工详细信息。
只有在insert查询中未指定列时,MySQL才会插入默认值。根据当前映射,hibernate将生成以下查询:
insert
into
EMPLOYEE
(status, created_on)
values
(?, ?)
这将在
列上的created_中插入null。要让MySQL拥有默认的当前时间戳
,请在映射中使用insert=“false”
<property name="created_on" column="created_on" type="date" insert="false"/>
只有在insert查询中未指定列时,MySQL才会插入默认值。根据当前映射,hibernate将生成以下查询:
insert
into
EMPLOYEE
(status, created_on)
values
(?, ?)
这将在
列上的created_中插入null。要让MySQL拥有默认的当前时间戳
,请在映射中使用insert=“false”
<property name="created_on" column="created_on" type="date" insert="false"/>