【发布时间】:2015-09-15 08:52:02
【问题描述】:
给定一个 Hibernate/JPA 实体,关联实体的级联设置为 ALL:
@Entity
public class Entity {
@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true, mappedBy = "entity")
private Set<RelatedEntities> relatedEntities;
}
是否可以暂时关闭级联,例如允许实体被持久化而不持久化它的相关实体?
【问题讨论】:
-
如果您使用级联约束,您可以使用 DEFERRABLE INITIALLY IMMEDIATE 约束保持实体,而无需立即检查约束。但在交易结束时,您还必须保存相关实体。更多:stackoverflow.com/questions/5300307/…
-
谢谢,但由于引用的文章与 SQL 关键字相关但级联由 Hibernate 管理,因此不确定这将如何工作?
-
级联肯定由db管理(如果你不使用hibernate的create选项,你必须创建它们),我怀疑如果你添加注释,hibernate也可以验证约束,但我不使用它们。如果要保存没有相关实体的实体,可能是db结构设计不当?
-
也许你应该使用另一个表来建立关系?
-
@MrJedi 你说的是一个完全不同的概念,根本与问题无关。
标签: java hibernate jpa cascading-deletes cascading