8

出于开发目的,我如何配置休眠以使其在运行之前删除所有表?我不想在运行我的代码之前不断地手动删除所有表。

我已经在使用

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

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

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

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

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

4

4 回答 4

6

使用该值create-drop而不是create

于 2013-08-20T18:52:41.343 回答
1

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

于 2013-08-21T06:49:02.420 回答
0
<!-- Drop and re-create the database schema on startup -->
<property name="hbm2ddl.auto">create-drop</property>
于 2013-08-20T18:54:00.767 回答
0

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

在此处输入图像描述

所以你的配置文件“jdbc:postgresql://localhost:5432/postgres”中的“postgres”部分指的是我在PostgreSQL/pgAdmin中画的红框:

在此处输入图像描述

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

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

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

在此处输入图像描述

于 2016-06-01T19:31:07.727 回答