hibernate4中的默认值

时间:2013-07-29 07:06:59

标签: java hibernate java-ee hibernate-mapping

我有Object类,它被映射到oracle数据库表。 在此类中,一列在数据库中具有默认值。我用过这个:      @Column(name =“FK_STATUS”,nullable = false,columnDefinition =“int default 1”) 数据库中的列类型是Number。但我得到“无法在FK_status中插入null”错误。 请帮忙。

4 个答案:

答案 0 :(得分:1)

由于我没有在你的行中看到任何语法错误,因此我不太了解H-3,因为我正在使用H-3。

这可能是一个修复,不完全是您的问题的解决方案。

使用variable的默认值。

private Integer fkStatus= 1;

答案 1 :(得分:0)

columnDefinition将起作用

columnDefinition = "int default 1" (should be "default 1")

但您必须先重新创建数据库表。它会将列设置为将int值设置为int 1

好吧,您应该通过

重新创建数据库

<强>的persistence.xml

<property name="hibernate.hbm2ddl.auto" value="create-drop"/>

或手动

update {TABLE} 
set FK_STATUS = 1 
where status is null;

alter table {TABLE} modify (FK_STATUS default 1 NOT NULL);

答案 2 :(得分:0)

@NGS,诸如unique,nullable,default等约束是JPA / Hibernate在创建表时使用的关键字。创建表后它没有任何意义。 例如,如果首先创建一个表,其中列是非唯一的,并且如果您计划通过提供注释来控制列的唯一性,则无效。

为表创建提供了所有这些元数据。

答案 3 :(得分:0)

我想在您的Hibernate-Mapping Column代码中做一些小修正,请参阅下面的

@Column(name = "FK_STATUS" ,nullable = false, columnDefinition = "int(10) default 1")

使用此功能并告诉我,如果这不适用于您的代码