Spring-Data-JPA - 如何删除 OneToMany 关系中的子记录

Ram*_*ash 2 spring-data spring-data-jpa

我有一个Person具有 OneToMany 映射的实体Set<Address>

@OneToMany(
        mappedBy = "person",
        fetch = FetchType.LAZY,
        cascade = CascadeType.ALL
)
private Set<Address> addresses = new HashSet<>();
Run Code Online (Sandbox Code Playgroud)

地址类有

@ManyToOne
@JoinColumn(name = "person_id")
private Person person;
Run Code Online (Sandbox Code Playgroud)

现在我可以成功在数据库中添加记录。

我怎样才能实现清除地址哈希集应该导致删除该人的地址记录。

例如:在我的服务层中,下面的代码不会删除数据库中的地址。

Person p =  personRepository.findBy(1).get();
p.getAddresses().clear();
personRepository.save(p);

Run Code Online (Sandbox Code Playgroud)

实现这一目标的正确方法是什么?

Ram*_*ash 6

我必须这样做才能使这项工作成功。

@OneToMany(
        mappedBy = "person",
        fetch = FetchType.LAZY,
        cascade = CascadeType.ALL,
        orphanRemoval = true
)
private Set<Address> addresses = new HashSet<>();    
Run Code Online (Sandbox Code Playgroud)