Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/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_Spring Boot_Hibernate_Jpa - Fatal编程技术网

Java 从集合中删除项目时从数据库中删除项目

Java 从集合中删除项目时从数据库中删除项目,java,spring-boot,hibernate,jpa,Java,Spring Boot,Hibernate,Jpa,我有以下实体(仅显示相关部分): 在数据库中,表“bar”有一个外键,该外键引用一个foo id。表“foo”本身不包含任何条 当我使用fooService.update(Foo)将一个Foo保存到数据库时,它的集合中的条也会被保存。我使用的是Spring Boot,fooService是一个自动连接的fooService,它本身包含和自动连接的FooRepository 在代码的某些部分中,我使用foo.getbar().clear(),然后添加一些其他条,然后使用fooService.upd

我有以下实体(仅显示相关部分):

在数据库中,表“bar”有一个外键,该外键引用一个foo id。表“foo”本身不包含任何条

当我使用
fooService.update(Foo)
将一个Foo保存到数据库时,它的集合中的条也会被保存。我使用的是Spring Boot,
fooService
是一个自动连接的
fooService
,它本身包含和自动连接的
FooRepository

在代码的某些部分中,我使用
foo.getbar().clear()
,然后添加一些其他条,然后使用
fooService.update(foo)


我想知道是否有一种方法可以在更新我的foo后自动从数据库中删除已从集合中清除的条形图?当然,在清除集合之前,我可以手动执行此操作,但是如果我不必这样做那就太好了。

你可以在你的OneToMany注释中使用孤儿移除

@OneToMany(mappedBy = "foo", fetch = FetchType.EAGER, cascade = CascadeType.ALL, orphanRemoval = true)

删除getBars()集合中的元素并保存Foo时,数据库中的底层记录也会被删除

这是否回答了您的问题?
@Entity
@Table(name = "bar", schema = "public", catalog = "mycatalog")
public class Bar{
    private Integer id;
    private Foo foo;

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id", nullable = false)
    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    @ManyToOne(cascade=CascadeType.DETACH)
    @JoinColumn(name = "foo", referencedColumnName = "id", nullable = false)
    public Foo getFoo() {
        return foo;
    }

    public void setFoo(Foo foo) {
        this.foo = foo;
    }
}

@OneToMany(mappedBy = "foo", fetch = FetchType.EAGER, cascade = CascadeType.ALL, orphanRemoval = true)