日期:2014-05-16  浏览次数:20397 次

用hibernate配置插入数据库默认值

当数据库中字段有默认值且不为空时,如果想实现不需要在客户端插入值,而是插入数据库默认值时,应该在配置hibernate实体文件时,为<class> 加入dynamic-insert="true",并且该<property>不能设置 not-null="true"。
dynamic-insert 是hibernate 根据实体具体的插入数据情况生成 sql语句。
如:User表 mysql
create table user
(
?? id int primary key unique,
?? realName varchar(10) not null ,
?? idCode varchar(20) not null,
?? createDate timestamp default now()
);


<class name="user" table="user" dynamic-insert="true">
? <id name="id" type="java.lang.Integer">
<column name="id" />
???? <generator class="native" />
</id>
<property name="realName" type="java.lang.String">
<column name="realName" length="10" not-null="true" />
</property>
<property name="idCode" type="java.lang.String">
<column name="idCode" length="20" not-null="true" />
</property>
<property name="createDate" type="java.util.Date">
<column name="createDate" length="19" not-null="true"(不能加)/>
</property>
</class>

?