Spring 为什么可以';我不能在JPA中删除该实体吗?

Spring 为什么可以';我不能在JPA中删除该实体吗?,spring,spring-boot,jpa,spring-data-jpa,Spring,Spring Boot,Jpa,Spring Data Jpa,这很令人困惑,我找不到解决办法。。我一直在寻找解决小问题的方法,然后新问题就会出现。我需要能够删除该实体,但每当我使用该方法时,它就什么也不做 我有4个实体,它们是: 类型: 所有4个扩展的Musicity只包含ID、EntityTitle和Description。然后,他们都有属性权限将ID更改为track\u ID或album\u ID,以及所有4个上的track\u description或album\u description 我可以编辑相册并替换里面的曲目。但是我不能删除相册。为什么?

这很令人困惑,我找不到解决办法。。我一直在寻找解决小问题的方法,然后新问题就会出现。我需要能够删除该实体,但每当我使用该方法时,它就什么也不做

我有4个实体,它们是: 类型:

所有4个扩展的Musicity只包含ID、EntityTitle和Description。然后,他们都有属性权限将ID更改为track\u ID或album\u ID,以及所有4个上的track\u description或album\u description


我可以编辑相册并替换里面的曲目。但是我不能删除相册。为什么?当我使用“albumRepository.delete(deleteAlbum);”或“jpaRepository.delete(entity)”方法时,是什么阻止JPA这样做的?

您是否确保没有与您尝试删除的相册相关联的艺术家?如果没有,那么您应该能够删除。如果有一些艺术家,那么你将无法做到这一点


另一方面,如果删除艺术家,则应删除该艺术家的所有相册。

只要有艺术家实例引用相册实例,就不能删除该相册实例。您需要先从艺术家中删除相册


通常,通过注释中的CascadeType,您可以控制删除的类的子类发生的情况或删除子类的位置。请参见

只要有艺术家实例引用相册实例,您就无法删除该相册实例。你需要先从艺术家那里删除专辑。你的音乐中心有@MappedSuperClass吗?我的音乐中心有一个MappedSuperClass是的!这会影响结果吗?“对此我能做些什么?”克里斯汀:你的回答确实奏效了!如果你把它作为一个答案贴出来,我可以把它作为正确的答案。所有的艺术家都在专辑里,这是一种单一的,多种多样的折磨。正如我上面提到的,我确实有一个MappedSuperclass,我用上面提到的Christine答案解决了它,但我很好奇,如果不打电话给家长,从那里移除实体,这是否可行?你知道吗?
public class Genre extends MusicEntity {

@OneToMany(fetch = FetchType.LAZY)
@JoinColumn(name = "genre_id")
private List<Artist> artistList;
@OneToMany(fetch = FetchType.LAZY)
@JoinColumn(name = "genre_id")
private List<Album> albumList;
@OneToMany(fetch = FetchType.LAZY)
@JoinColumn(name = "genre_id")
private List<Track> trackList;
public class Artist extends MusicEntity {

@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@JoinColumn(name = "artist_id")
private List<Album> artistAlbumList;
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JoinColumn(name = "artist_id")
private List<Track> artistTrackList;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name="genre_id")
private Genre genre;
private String image;
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER, orphanRemoval = true)
@JoinColumn(name = "album_id")
private List<Track> trackList;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "artist_id")
private Artist artist;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "genre_id")
private Genre genre;
private String image;
public class Track extends MusicEntity {

@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "genre_id")
private Genre genre;
@JsonIgnore
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "album_id")
private Album album;

@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "artist_id")
private Artist artist;