java - 如果相关实体存在,则防止删除实体

标签 java hibernate jpa persistence

我正在使用 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/

相关文章:

java - createNewFile( ) 导致警告信息,如何消除?

java - 按特定值更改 Arraylist 顺序

java - 在不同的包中实现数据库 JPA 和 JPA 客户端类(Apache Karaf 和 OpenJPA)

java - JPA - 延迟加载 - LazyInitializationException - 不访问子集合时

java - jpa复合主键表不返回值

java - 在 Catalina : "Error loading JNotify watch service: null" 上全新安装后尝试使用 sbt 运行 Play Scala 应用程序时出错

java - JRuby OJDBC,没有错误,但插入不显示?

java - 为什么 Spring 数据抛出 java.sql.SQLException : ResultSet is from UPDATE. 无数据。执行 native mysql 查询

java - 实体管理器 Hibernate/Spring Roo 错误 - 无法创建 TypedQuery

java - hibernate 异常 : Found two representations of same collection