Java hibernate4中的默认值

Java hibernate4中的默认值,java,hibernate,jakarta-ee,hibernate-mapping,Java,Hibernate,Jakarta Ee,Hibernate Mapping,我有一个映射到oracle数据库表的对象类。 在这个类中,一列在数据库中有一个默认值。我用了这个: @列(name=“FK_STATUS”,null=false,columnDefinition=“int default 1”) 数据库中的列类型为Number。但我得到“不能在FK_状态中插入null”错误。 请帮助。因为我在您的行中没有看到任何语法错误,因为我正在使用H-3,所以对H-3不太了解 这可能是一个解决方案,而不是完全解决您的问题 对变量使用默认值 private Integer f

我有一个映射到oracle数据库表的对象类。 在这个类中,一列在数据库中有一个默认值。我用了这个: @列(name=“FK_STATUS”,null=false,columnDefinition=“int default 1”) 数据库中的列类型为Number。但我得到“不能在FK_状态中插入null”错误。
请帮助。

因为我在您的行中没有看到任何语法错误,因为我正在使用H-3,所以对H-3不太了解

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

变量使用默认值

private Integer fkStatus= 1;

该定义将起作用

columnDefinition = "int default 1" (should be "default 1")
但您必须首先重新创建DB表。它会将您的列设置为将空值设置为int 1

嗯,你应该重新创建DB via

persistence.xml

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

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


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

我想对Hibernate映射列代码做一些小的修改,请参见下面的内容

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

使用此选项并让我知道,如果这不适用于您的代码

这是正确的,但不是数据库中处理的默认值。当我更改数据库中的默认值时,我必须更改源code@NGS是的,但是
@Column(name=“FK_STATUS”,nullable=false,columnDefinition=“int default 1”)
也在源代码编写中?您的Java字段上有任何验证注释吗,例如
@NotNull
?不,我没有使用@NotNull或任何其他验证注释。我不想更改结构,我已经创建了我的表,其中的一个字段具有由DB生成的默认值。我将使用hibernate设置其中的值,但出现“无法插入空值”错误。请向我们提供您的实体类代码和异常的堆栈跟踪,您将获得。
@Column(name = "FK_STATUS" ,nullable = false, columnDefinition = "int(10) default 1")