如果要使用ON DELETE CASCADE的外键,可以使用@OnDelete
注释在休眠模式下执行此操作。它强制hibernate为具有适当外键约束的表生成DDL。Hibernate设置约束“ON UPDATE CASCADE”
我正在寻找的是一个可能性,告诉休眠创建一个约束ON UPDATE CASCADE。不幸的是,在hibernate中没有@OnUpdate
注释。 我怎么能告诉休眠生成表的DDL为ON UPDATE CASCADE约束为外键?
如果要使用ON DELETE CASCADE的外键,可以使用@OnDelete
注释在休眠模式下执行此操作。它强制hibernate为具有适当外键约束的表生成DDL。Hibernate设置约束“ON UPDATE CASCADE”
我正在寻找的是一个可能性,告诉休眠创建一个约束ON UPDATE CASCADE。不幸的是,在hibernate中没有@OnUpdate
注释。 我怎么能告诉休眠生成表的DDL为ON UPDATE CASCADE约束为外键?
您可以使用@Cascade注释吗?
@Cascade(CascadeType.SAVED_UPDATE)
当hibernate生成CREATE TABLE DDL时,级联注解不幸没有影响。 – rsvidler
如果使用休眠本地API,那么你应该使用Hibernate进行级联的注解,它是:
> @Cascade(CascadeType.SAVED_UPDATE)
然后调用save()方法,但使用注释时,应该调用JPA 的persist()方法请查阅hibernate文档以获取更多详细信息。
http://docs.jboss.org/hibernate/stable/annotations/reference/en/html_single/#entity-hibspec-cascade
以下是这可能是有用的一些级联操作。
CascadeType.PERSIST:表示将save()或persist()操作级联到相关实体。
CascadeType.MERGE:表示相关的 实体在归并实体 合并时合并为托管状态。
CascadeType.REFRESH:对refresh() 操作做同样的事情。
CascadeType.REMOVE:删除所有相关实体 当拥有实体被删除时与此设置的关联。
CascadeType.DETACH:如果发生“手动 分离”,则分离所有相关实体。
CascadeType.ALL:是所有以上 级联操作的简写。
不幸的是,这并不能帮助我。我想要的是在hibernate创建表时获得正确的DDL。外键约束应该如下所示:ON UPDATE CASCADE ON DELETE CASCADE。当我使用您推荐的解决方案时,情况并非如此。我想使用数据库工具(pgAdmin)来修改行,因此我需要一个解决方案,让hibernate使用正确的外键约束创建表。 – rsvidler
更新主键通常不是一个好主意。 – joop