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
Postgresql 多通关系上的级联式删除_Postgresql_Hibernate - Fatal编程技术网

Postgresql 多通关系上的级联式删除

Postgresql 多通关系上的级联式删除,postgresql,hibernate,Postgresql,Hibernate,我在工作包s和项目s之间有一个@manytone关系。其中一个项目可以有一对多个工作包 我的工作包实体指的是项目类似的实体: @NotNull @ManyToOne(targetEntity = ProjectEntity.class) private ProjectEntity project; 因此,我的工作包表中的每一行都引用某个项目的id 但是当我试图删除一个项目时,我得到了一个外键约束(这是有意义的,因为我的工作包依赖于一个项目,应该在删除前者之前删除) 但是cascade=Casc

我在
工作包
s和
项目
s之间有一个
@manytone
关系。其中一个项目可以有一对多个工作包

我的
工作包
实体指的是
项目
类似的实体:

@NotNull
@ManyToOne(targetEntity = ProjectEntity.class)
private ProjectEntity project;
因此,我的
工作包
表中的每一行都引用某个项目的
id

但是当我试图删除一个项目时,我得到了一个外键约束(这是有意义的,因为我的工作包依赖于一个项目,应该在删除前者之前删除)

但是
cascade=CascadeType.REMOVE将不起作用,因为我正在删除我的项目,而不是我的
工作包。是否有方法在删除某个项目时删除与该项目相关的
工作包


作为
Hibernate
的新手,除了浏览每个
工作包
并逐个删除它们之外,没有什么明显的事情会浮现在脑海中。

关于删除级联:如果删除项目表中的项目行,引擎将同时删除相关的工作包。这可用于对辅助表进行自动清理

  • 声明架构时,请执行以下操作

    alter table工作包添加约束constraintName
    外键(id)引用删除级联上的项目(id)

  • 您必须显式地将子对象设置为null

    (工作包子项:project.getWorkpackages())的
    {
    setProject(null);
    } 
    删除(OwningSide)


  • 如何通过
    Hibernate
    实现这一点?我不确定我是否理解您的两点。请在hibernate中单独遵循第二点来执行此操作,在删除项目之前,检索所有工作包并将项目显式设置为null。Hibernate确保在删除项目时,它会自动删除工作包,