使用Hibernate中的注释定义默认列值

我知道这里有很多关于SO和网络的问题,但是所有答案建议使用columnDefinition ,这是特定于数据库的,因此不适合我,因为我正在研究的系统需要在不同的数据库上运行。

我发现了这个hibernate问题 ,有人请求注释这个function。 问题已经结束,说另一个问题将涵盖该function。 第二个问题显然添加了注释@Generated以及其他一些注释,但我找不到任何关于如何使用这些新注释定义默认列值的文档。

所以我的问题是:有谁知道如何使用注释定义默认列值(而不是使用columnDefinition )?

编辑:进一步澄清我的问题:当我添加一个新的非空列时,我需要Hibernate来更新现有的模式(将新列添加到相应的表)。 但由于该列为非null,因此数据库无法在未指定默认值的情况下创建列(如果表中已存在某些行)。 所以我需要指示Hibernate发出以下DDL语句: ALTER TABLE my_table ADD COLUMN new_column VARCHAR(3) DEFAULT 'def' ,但它必须独立于使用的数据库。

我认为你不需要任何文档,java文档是自我解释。 如果我理解正确,您需要一种方法来为字段设置默认值。 如果是,请参阅以下代码段。

 @Entity @Table(name = "my_entity") public class SomeEntity extends BaseEntity { public static final class MyValueGenerator implements ValueGenerator { @Override public String generateValue(Session session, Object owner) { return "This is my default name"; } } @Basic @Column(name = "name", insertable = true, updatable = true, nullable = false, length = 255) // This will add a DDL default @ColumnDefault("'This is my default name'") // This will add a runtime default. @GeneratorType(type = MyValueGenerator.class) private String name; // getters and setters } 

以下是为我工作。

@ColumnDefault( “ ‘0.0’”)

@Column(name =“avgRating”)

私人浮动平均;