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