spring 如何防止使用JpaRepository删除引用实体/表?

nqwrtyyt  于 2022-10-30  发布在  Spring
关注(0)|答案(1)|浏览(152)

我正在为我的Spring Boot 应用程序创建一个删除API端点。我尝试使用JpaRepository提供的delete()和deleteById()方法。但是,每当我尝试使用ConcertEntity或ConcertId删除Concert时,关联的地点条目就会从“地点”表中删除。如何防止使用JpaRepository删除引用实体/表?
我目前的解决方案是在删除Concert实体之前将地点设置为空。我的ConcertRepositroy扩展到JpaRepository。

服务实施中的当前解决方案

public void deleteConcert(ConcertEntity e){
  e.setVenue(null);
  this.concertRepository.delete(e);
}

Concert实体

@Entity
@Table(name = "CONCERTS")
public class ConcertEntity{

  @Id
  private UUID concertId;

  @Column(name = "ARTIST")
  String artist;

  @Column(name = "VENUE_ID")
  VenueEntity venue;

  /*Getters && Setters here...*/
}
jyztefdp

jyztefdp1#

使用适当的注解定义关系(@ManyToOne或@OneToOne)

@ManyToOne(optional = true)
@JoinColumn(name = "VENUE_ID")
private VenueEntity venue;

默认情况下,这不会触发任何级联删除,但如果要自定义行为,可以将级联参数添加到@ManyToOne或@OneToOne注解中。

相关问题