[英]Hibernate and schema update when changing column type
我有Hibernate来设置我的实体。 对于开发人员环境,我希望Hibernate处理架构更新(主要是一些添加新列,删除或编辑列类型)。 添加新列时,Hibernate会添加它。 从实体中删除字段不会导致列从数据库中删除。 在一些帖子中,我读到这是正常行为。 但是当我尝试编辑实体字段的类型时,会出现问题:
@Entity
class Person {
String lastName; //This is the new column
}
这导致Hibernate添加一个VARCHAR(255)类型的列,其默认值为NULL,NOT NULL为YES。
数据库已经有一条记录(我正在测试行为),因此Hibernate使用值为空字符串的现有行为添加了列。 我没有在实体的构造函数中添加列的初始化。
将列类型更改为int
产生错误。 Hibernate尝试将Null值添加到int字段时引发了IllegalArgumentException
。
我认为Hibernate将删除列,重新创建它,并添加Null值没有问题(因为int字段可以具有NULL值)。 总是在列名中给出默认值是一种好习惯吗? 也许在PrePersist的功能中?
@PrePersist
public void prePersist(){
this.lastName = 5; //after changing lastName to int.
}
我想在此添加即使在开发中我们也不想放弃表格。 我们希望保持现有价值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.