我正在使用 JPA 2 + Hibernate 4,并且正在对模型实体实现一些 CRUD 操作。
现在我需要防止当数据库中存在相关实体 (EntityA
) 时删除某个实体 (EntityB
):
@Entity
public class EntityA {
@Id
private int id;
@OneToOne(mappedBy = "entityA", optional = false, fetch = FetchType.LAZY)
private EntityB entityB;
//...
}
@Entity
public class EntityB {
@Id
private int id;
@OneToOne
@JoinColumn(name = "id")
private EntityA entityA;
//...
}
是否有任何方法可以使用关系选项来实现此目的,或者我应该在删除 EntityB
之前检查我的 dao/存储库中的 EntityA
是否存在?
注意对于 @ManyToOne
关系,我也需要这个。
最佳答案
如果您想在代码中防止这种情况发生,只需不要删除该实体(通过手动检查)。通过注释不可能做到这一点。
另一方面,这对我来说听起来更像是对数据库约束的需要。如果这些实体已经相关,则只需添加外键约束(如果不存在)。如果没有,请考虑添加一个。
PS:如果您已经建立了关系,请检查 CascadeType.REMOVE 设置。
关于java - 如果相关实体存在,则防止删除实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22152346/