如何在现有数据库中生成new not null列的默认值

时间:2017-05-09 05:01:47

标签: java database hibernate

我有一个现有的数据库。需要使用默认值添加新的非空列。使用ValueGenerator接口可以在hibernate 4.3中完成。但是我的项目有hibernate 3.6,它没有提供这个功能。有什么方法可以使用hibernate执行此操作。

3 个答案:

答案 0 :(得分:4)

您可以使用具有可空属性的@Column e.g:

 @Column(nullable = false)
    private String name = "Jhon Doe";

使用@Column注释的columnDefinition属性也是一个小问题,例如:

@Column(columnDefinition="double precision default '96'")
private Double grolsh;

答案 1 :(得分:1)

你可以通过sql本身来做到这一点。

ALTER TABLE {TABLENAME} 
ADD {COLUMNNAME} {TYPE} {NULL|NOT NULL} 
CONSTRAINT {CONSTRAINT_NAME} DEFAULT {DEFAULT_VALUE}
[WITH VALUES]

E.g:https://www.w3schools.com/sql/sql_default.asp

答案 2 :(得分:0)

来自hibernate文档的示例(默认情况下):

@Column(name = "INITIAL_PRICE",
columnDefinition = "number(10,2) default '1'")
@org.hibernate.annotations.Generated(
org.hibernate.annotations.GenerationTime.INSERT
)
private BigDecimal initalPrice;

对于可空的你可以使用

@Column(nullable = false)