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

时间:2012-03-28 18:54:18

标签: java database hibernate

我有一个名为Person的表,我已经在hibernate中映射了我已经有一些我不想放松的数据了。我需要添加一个名为address的新列,不知道如何在hibernate中做到这一点吗?

先谢谢..

3 个答案:

答案 0 :(得分:7)

如果当前表是由Hibernate生成的,则只需在地址列的java实体类中添加address属性即可。然后将hibernate.hbm2ddl.auto属性设置为update,hibernate将在下次构建SessionFactory时自动创建此列。 hibernate.hbm2ddl.autoupdate时,Hibernate不会更改数据库中的任何数据存储。

或者,您可以手动发出SQL来更改表结构,然后在地址列的java实体类中添加地址属性。

答案 1 :(得分:1)

在将hibernate.hbm2ddl.auto设置为update之前,您还应该阅读其他SO问题/答案:Hibernate: hbm2ddl.auto=update in production?

答案 2 :(得分:0)

可能您不会被迫使用Hibernate来创建/更新数据库架构。我假设你的配置中有这样的东西:

<property name="hibernate.hbm2ddl.auto" value="create-drop" />

只需将值更改为&#34;验证&#34;,对映射执行更改并单独执行ALTER TABLE语句。

其他选择是使用&#34;更新&#34;让Hibernate弄清楚如何更新表结构。我建议将它保存在您手中,只需手动执行DDL SQL。