在hibernate启动时删除所有表

时间:2013-08-20 18:50:39

标签: java hibernate

为了开发目的,如何在运行之前将所有表DROPS配置为hibernate?在运行我的代码之前,我不想手动DROP所有表格。

我已经在使用

<property name="hbm2ddl.auto">create</property>

但是这似乎不起作用,因为我遇到了几个错误,这些错误是由前一次运行中的错误模式引起的。

修改 也许我的问题有点误导。我想要一个干净的数据库。它不仅是因为实际的运行时错误,而且还因为每次运行都有一个干净的数据库。

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

忽略休眠不知道的表(如果你正在使用表名,这种情况可能经常发生)。

4 个答案:

答案 0 :(得分:5)

使用值create-drop代替create

答案 1 :(得分:1)

在开发环境中启动时获得始终干净的数据库的另一种可能性是内存数据库,如H2或类似数据库。有关详细信息,请参阅http://www.h2database.com/html/features.html#in_memory_databases

答案 2 :(得分:0)

<!-- Drop and re-create the database schema on startup -->
<property name="hbm2ddl.auto">create-drop</property>

答案 3 :(得分:0)

您的Java配置文件在此引用数据库:

enter image description here

所以配置文件的“jdbc:postgresql:// localhost:5432 / postgres”中的“postgres”部分引用了我在PostgreSQL / pgAdmin中绘制的红色框:

enter image description here

我建议您创建一个新数据库并移动您不希望Hibernate触及该数据库的模式和表。

实际上,每次hibernate连接到pgAdmin时,它都将访问您在配置文件中设置的数据库,并且配置文件中的设置将应用于该数据库。

要在pgAdmin中创建新数据库,请右键单击Databases并转到“New Database”。这是一张图片:

enter image description here