Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在hibernate启动时删除所有表_Java_Hibernate - Fatal编程技术网

Java 在hibernate启动时删除所有表

Java 在hibernate启动时删除所有表,java,hibernate,Java,Hibernate,我如何配置hibernate,使其在运行之前删除所有表,以便于开发?我不想在运行代码之前不断地手动删除所有表 我已经在用了 <property name="hbm2ddl.auto">create</property> 创建 但这似乎不起作用,因为我遇到了几个错误,这些错误是由前一次运行中的错误模式引起的 编辑 也许我的问题有点误导。我想要一个干净的数据库。这不仅是因为实际的运行时错误,还因为每次运行都有一个干净的数据库 <property name="hbm2

我如何配置hibernate,使其在运行之前删除所有表,以便于开发?我不想在运行代码之前不断地手动删除所有表

我已经在用了

<property name="hbm2ddl.auto">create</property>
创建
但这似乎不起作用,因为我遇到了几个错误,这些错误是由前一次运行中的错误模式引起的

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

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

忽略休眠时未知的表(如果您在玩弄表名,这种情况会经常发生)。

使用值
create drop
而不是
create

<!-- Drop and re-create the database schema on startup -->
<property name="hbm2ddl.auto">create-drop</property>
创建下降
在开发环境中,在启动时获得始终干净的数据库的另一种可能性是内存中的数据库,如H2或类似数据库。有关详细信息,请参阅。

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

所以“jdbc:p”中的“postgres”部分ostgresql://localhost:5432/postgres“您的配置文件的名称是指我在PostgreSQL/pgAdmin中绘制的红色框:

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

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

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


在非开发环境中使用此配置时要小心。但这不会删除hibernate中不再知道的表,因为我已经重命名了它们。没有办法简单地删除数据库中的所有表吗?不直接使用hibernate。Hibernate by intent只会尝试操作它所知道的对象。另一方面,可以使用hibernate连接创建本机SQL命令,该连接查询数据库元数据(如INFORMATION_SCHEMA)并执行本机表删除。这将删除测试后创建的表,但问题是之前,其他表将保留在DB中。我想知道如何在干净的数据库中开始测试,但在测试后保留数据以供手动检查创建删除是一种方法。如果对数据模型进行了重大更改(例如删除/重命名了某些实体),请手动清除数据库。我认为这样做会花费更少的时间,因为这将是非常罕见的,那么找到适合您的用例场景的开箱即用的解决方案将花费更多的时间。in application.properties:spring.jpa.hibernate.ddl auto=create drop