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