使用Hibernate映射的表中添加列,而不丢失现有数据

9
我有一张名为Person的表格,已经在Hibernate中进行了映射,并且已经存在一些数据,我不想失去这些数据。我需要添加一个名为address的新列,你知道如何在Hibernate中实现吗?
提前感谢您的帮助。

你将需要使用hbm2ddl - ring bearer
3个回答

7
如果您当前的表是由Hibernate生成的,您可以在Java实体类的地址列中简单地添加地址属性。然后将hibernate.hbm2ddl.auto属性设置为update,当下一次构建SessionFactory时,Hibernate会自动创建此列。当hibernate.hbm2ddl.autoupdate时,Hibernate不会更改数据库中存储的任何数据。
或者,您可以手动发出SQL来更改表结构,然后在Java实体类的地址列中添加地址属性。

我已将属性设置为更新。但我不明白,为什么它仍然试图创建一个表。它触发了创建表而不是修改表。你能帮我解决这个问题吗? - Vaibhav Jain

2
很可能你不必使用Hibernate来创建/更新数据库模式。我假设你的配置文件中有类似以下的内容:
<property name="hibernate.hbm2ddl.auto" value="create-drop" />

只需将值更改为“validate”,对映射进行更改,然后单独执行ALTER TABLE语句即可。

另一种选择是使用“update”来让Hibernate自动更新表结构。我建议您自己掌握并手动执行DDL SQL。


由于某些原因,“update”未执行修改语句。 - Vaibhav Jain

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接