如果存在相关实体,则阻止实体删除

时间:2014-03-03 16:45:29

标签: java hibernate jpa persistence

我正在使用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关系。

2 个答案:

答案 0 :(得分:1)

如果你想在你的代码中阻止它,而不是简单地删除那个实体(通过手动检查)。注释不可能做到这一点。

另一方面,这听起来像是需要DB约束。如果这些实体已经相关,则只需添加外键约束(如果不存在)。如果没有,请考虑添加一个。

PS:如果您已经有关系,请检查CascadeType.REMOVE设置。

答案 1 :(得分:0)

我认为你不能用注释来解决这个问题。你应该先检查相关实体的存在。