是否可以为JPA中的列设置默认值,如果可以,如何使用注释来完成?


当前回答

实际上,这在JPA中是可能的,尽管使用@Column注释的columnDefinition属性有点hack,例如:

@Column(name="Price", columnDefinition="Decimal(10,2) default '100.00'")

其他回答

可以在数据库设计器中定义默认值,也可以在创建表时定义。例如,在SQL Server中,您可以将Date字段的默认库设置为(getDate())。如列定义中所述,使用insertable=false。JPA不会在插入时指定该列,数据库将为您生成该值。

@Column(columnDefinition="tinyint(1) default 1")

我刚刚测试了这个问题。它工作得很好。谢谢你的提示。


关于评论:

@Column(name="price") 
private double price = 0.0;

当然,这个选项不会设置数据库中的默认列值。

@ColumnDefault("abcd")
var name: String,

在那里!您已经为列名设置了默认值

我找到了另一种方法来解决同样的问题,因为当我创建自己的对象并在数据库中持久化时,不尊重DDL的默认值。

因此,我查看了控制台,生成了SQL,并看到所有字段都有插入,但对象中只有一个属性的值发生了变化。

我在模型类中放了这个annotation。

@DynamicInsert

插入数据时,框架不会插入空值或未修改的值,从而使插入更短。

也有@DynamicUpdate注释。

我尝试了一些JPA/ hibernate的方法,但没有一个似乎工作得很好。由于我使用Oracle,我创建了一个“之前的触发器”,在触发器中一个简单的空测试,然后如果空集根据需要