首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 开源软件 >

oracle时间字段默认值,hibernate投射

2012-06-29 
oracle时间字段默认值,hibernate映射oracle时间字段默认值用sysdate:create table table_name(id number n

oracle时间字段默认值,hibernate映射

oracle时间字段默认值用sysdate:

create table table_name(

id number not null,

tempdate date default sysdate)

创建序列号

create sequence sequence_name increate by 1 start with 1 maxvalue 9999;

insert into table_name(id) values(sequence_name.nextval)

但是在程序中,我存储pojo时,属性为空,但是在数据库中却没取其默认值

在数据库字段是默认值时,如何设置hibernate,使得存储某条pojo时,数据库中出现相应字段默认值,如下:

1、在hibernate的xml配置文件中对有默认值字段的property添加(insert="false" update="false"):

<property name="N_ISOK" type="java.lang.Long" insert="false" update="false">
??????????? <column name="N_ISOK" precision="22" scale="0" />
</property>

注:insert="false" update="false" 的作用是不对当前字段进行insert和update操作,这样hibernate就不会在未指明默认列的情况下将数据库表中默认值字段清空,但同时也会造成无法对此字段插入或更新非默认值。
这个办法会使得该字段永远无法进行插入或更新操作,只能一直是默认值。
2、数据库中表字段必须设置默认值:

N_ISOK???? NUMBER(2) default 1

方法二(推荐):

在hibernate.xml中的class加入dynamic-insert="true" dynamic-update="true"

如:<class name="com.hibernate.bean.TLoginUser" table="T_LOGIN_USER" schema="CALLERMMS" dynamic-insert="true" dynamic-update="true">

注:dynamic-insert="true" dynamic-update="true" 的作用是当HQL语句中未指明的列将不进行insert和update操作,这样hibernate就不会在未指明默认列的情况下将数据库表中默认值字段清空。

这个灵活性更好,但该字段有值时,动态插入或更新,采用该字段值,若该字段无值,则采用默认值。

?

记住有默认值的字段一定不可允许为空,否则默认值无效,其必须是不空的,另hibernate映射配置文件中,属性转换数据类型我设为java.util.date,结果出错,设为date则可以,这个需要百度一下,看看怎么回事。

热点排行