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