Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.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 从JPA实体中删除元素时,从一对多关系中删除元素_Java_Database_Hibernate_Jpa - Fatal编程技术网

Java 从JPA实体中删除元素时,从一对多关系中删除元素

Java 从JPA实体中删除元素时,从一对多关系中删除元素,java,database,hibernate,jpa,Java,Database,Hibernate,Jpa,我将JPA(Hibernate)与以下具有一对多关系的实体类一起使用 当我向列表中添加元素,然后持久化组织实体时,它会将新元素添加到proyects表中,但是当我从列表中删除元素时,持久化(或合并)时不会发生任何事情,我希望从数据库中删除这些元素 我还在OneToMany注释中尝试了orphanRemoving=true,但它不起作用 @Entity public class Organization { @Id @GeneratedValue public

我将JPA(Hibernate)与以下具有一对多关系的实体类一起使用

当我向列表中添加元素,然后持久化组织实体时,它会将新元素添加到proyects表中,但是当我从列表中删除元素时,持久化(或合并)时不会发生任何事情,我希望从数据库中删除这些元素

我还在OneToMany注释中尝试了orphanRemoving=true,但它不起作用

@Entity
public class Organization {     

    @Id
    @GeneratedValue
    public long internalId;

    @Basic
    @Column(nullable = false, length = 100)
    private String name;

    @OneToMany(cascade = CascadeType.ALL, mappedBy = "organization")
    private List<Proyect> proyects;

    // Getters and Setters
}
@实体
公营班级组织{
@身份证
@生成值
公共长内ID;
@基本的
@列(nullable=false,长度=100)
私有字符串名称;
@OneToMany(cascade=CascadeType.ALL,mappedBy=“组织”)
私有列表项目;
//接球手和接球手
}

您需要将
Proyect.organization
设置为null并更新该实体,因为此属性负责数据库条目(
Proyect
在这种情况下是拥有方)。

这不起作用,在数据库中,Proyect表用等于的外键更新null@greuze将外键设置为null是从组织中删除项目时需要的,不是吗?如果不删除外键,项目仍然是组织的一部分。项目只是组织的一部分(一个项目不能在两个组织中),因此我希望当我从组织的项目列表中删除项目时,它会从数据库中删除too@greuze我懂了。尝试将Hibernate注释
@Cascade(CascadeType.DELETE\u ORPHAN)
添加到列表定义中。找到解决方案了吗?