0

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

4

4 回答 4

1

As i didn't see any syntax errors there in your line,Not much aware of H-3 as i'm using H-3.

This could be a fix,Not exactly solution for your problem.

Use a default value to your variable.

private Integer fkStatus= 1;
于 2013-07-29T07:14:11.593 回答
0

columnDefinition 将起作用

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

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

好吧,您应该通过以下方式重新创建数据库

持久性.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);
于 2013-07-29T08:06:41.743 回答
0

@NGS,唯一,可为空,默认等约束是JPA / Hibernate在表创建期间将使用的关键字。创建表后它没有任何意义。例如,如果您首先创建一个表,其中列是非唯一的,并且您打算通过提供注释来控制列的唯一性,则将不起作用。

所有这些类型的元数据都是为表创建提供的。

于 2013-07-29T12:17:33.810 回答
0

我想对您的 Hibernate-Mapping Column 代码进行小修正,请参见下文

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

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

于 2013-07-29T16:12:04.870 回答