Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如果存在相关实体,则防止删除实体_Java_Hibernate_Jpa_Persistence - Fatal编程技术网

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

Java 如果存在相关实体,则防止删除实体,java,hibernate,jpa,persistence,Java,Hibernate,Jpa,Persistence,我正在使用JPA2+Hibernate4,并在模型实体上实现一些CRUD操作 现在,当数据库中存在相关实体(EntityA)时,我需要防止删除某个实体(EntityB): @Entity public class EntityA { @Id private int id; @OneToOne(mappedBy = "entityA", optional = false, fetch = FetchType.LAZY) private EntityB entity

我正在使用JPA2+Hibernate4,并在模型实体上实现一些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


注意对于
@manytone
关系,我也需要这个。

我认为你不能用注释来解决这个问题。您应该在之前手动检查相关实体是否存在。

如果您想在代码中防止出现这种情况,而不只是删除该实体(通过手动检查)。对于注释,不可能做到这一点

另一方面,在我看来,这似乎需要DB约束。如果这些实体已经相关,那么只需添加外键约束(如果不存在)。如果没有,则考虑添加一个


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

同意DB约束+1.请CascadeType.REMOVE删除这一行,它不适合,因为它只是删除了对相关字段的引用…是的,我认为设置DB约束对我来说是正确的方法。非常感谢。