Java 从集合中删除项目时从数据库中删除项目
我有以下实体(仅显示相关部分): 在数据库中,表“bar”有一个外键,该外键引用一个foo id。表“foo”本身不包含任何条 当我使用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
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)