一、一对多、多对一
场景:
多首歌对应一个歌手,形成一对多、多对一关系。
音乐表:@ManyToOne
歌手表:@OneToMany
音乐表:
@ManyToOne
@JoinColumn(name = "singer_id") //外键名称
private Singer singer;
歌手表:
@OneToMany
@JoinColumn(name = "singer_id") //音乐表的外键名称
private List<MusicStorage> musicStorageList;
二、多对多
场景:
多个收藏夹可以收藏多首歌,形成多对多关系。
注解:
- @ManyToMany
- @JoinTable:生成中间表
收藏夹表
@ManyToMany
@JoinTable(name = "music_storage_favorites",
joinColumns = {@JoinColumn(name = "favorites_id")},
inverseJoinColumns = {@JoinColumn(name = "music_id")}
)
private List<MusicStorage> musicStorageList;
音乐表
@ManyToMany
@JoinTable(name = "music_storage_favorites",
joinColumns = {@JoinColumn(name = "music_id")},
inverseJoinColumns = {@JoinColumn(name = "favorites_id")}
)
private List<Favorites> favoritesList;
解释:
joinColumns 表示自身id字段,inverseJoinColumns 表示另一个表的id字段。
name 表示生成的中间表名称。