我正在使用JPA 2 + Hibernate 4,我正在模型实体上实现一些CRUD操作。
现在我需要阻止在数据库中存在相关实体(EntityB
)时删除某个实体(EntityA
):
@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;
//...
}
有没有办法使用关系选项实现这一点,还是应该在删除EntityA
之前检查我的dao / repository中是否存在EntityB
?
注意我也需要@ManyToOne
关系。
答案 0 :(得分:1)
如果你想在你的代码中阻止它,而不是简单地删除那个实体(通过手动检查)。注释不可能做到这一点。
另一方面,这听起来像是需要DB约束。如果这些实体已经相关,则只需添加外键约束(如果不存在)。如果没有,请考虑添加一个。
PS:如果您已经有关系,请检查CascadeType.REMOVE设置。
答案 1 :(得分:0)
我认为你不能用注释来解决这个问题。你应该先检查相关实体的存在。