制作Hibernate Drop Table Cascade

时间:2015-09-02 14:37:20

标签: hibernate jpa

我有hibernate.hbm2ddl.auto=create-drop设置,但在hibernate使用hibernate.import_files=db/create.sql生成数据库之后,我还根据SQL中的一个表创建了一个视图。

下次运行hibernate时,不能删除现有表,因为视图依赖于它。

如何使hibernate drop table级联以便视图也被删除?

定义像这样的实体似乎没有效果

@Entity
@OnDelete(action = OnDeleteAction.CASCADE)
@Table(name = "MY_TABLE")

1 个答案:

答案 0 :(得分:1)

我有完全相同的问题 - 一个视图定义(带有相应的JPA映射)阻止了其他表被删除。

对我有用的解决方案是使用 javax.persistence。* 属性,使您可以更好地控制创建/删除脚本。因此,我使用hibernate.hbm2ddl.auto而不是使用普通javax.persistence.schema-generation.database.action。这样我就可以先删除视图,然后引用表格。

通过使用<property name="javax.persistence.schema-generation.create-source" value="script-then-metadata"/>,您可以将用户定义的脚本与模式自动创建结合起来。

您可以在此处详细了解这些属性:https://docs.oracle.com/javaee/7/tutorial/persistence-intro005.htm