generated from Java-2025Fall/final-vibevault-template
更新 src/main/java/com/vibevault/model/Playlist.java
This commit is contained in:
parent
3830a3b051
commit
ac12b72751
@ -2,13 +2,12 @@ package com.vibevault.model;
|
|||||||
|
|
||||||
import jakarta.persistence.*;
|
import jakarta.persistence.*;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 歌单实体类
|
* 歌单实体类
|
||||||
*
|
*
|
||||||
* 需要实现:
|
* 需要实现:
|
||||||
* - 将此类映射为数据库表 "playlists"
|
* - 将此类映射为数据库表 "playlists"
|
||||||
* - id 作为自增主键
|
* - id 作为自增主键
|
||||||
* - name 不能为空
|
* - name 不能为空
|
||||||
@ -16,28 +15,56 @@ import java.util.List;
|
|||||||
* - 一个歌单包含多首歌曲(一对多关系)
|
* - 一个歌单包含多首歌曲(一对多关系)
|
||||||
* - 删除歌单时应级联删除其中的歌曲
|
* - 删除歌单时应级联删除其中的歌曲
|
||||||
*/
|
*/
|
||||||
|
@Entity // 实现:将此类映射为数据库表
|
||||||
|
@Table(name = "playlists") // 实现:指定表名为"playlists"
|
||||||
public class Playlist {
|
public class Playlist {
|
||||||
|
|
||||||
|
@Id // 实现:标记id为主键
|
||||||
|
@GeneratedValue(strategy = GenerationType.IDENTITY) // 实现:id作为自增主键
|
||||||
private Long id;
|
private Long id;
|
||||||
|
|
||||||
|
@Column(nullable = false) // 实现:name不能为空
|
||||||
private String name;
|
private String name;
|
||||||
|
|
||||||
|
// 实现:每个歌单属于一个用户(多对一关系)
|
||||||
|
@ManyToOne(fetch = FetchType.LAZY, optional = false) // 多对一,用户不能为空
|
||||||
|
@JoinColumn(name = "user_id") // 数据库中关联用户的字段名
|
||||||
private User owner;
|
private User owner;
|
||||||
|
|
||||||
|
// 实现:一个歌单包含多首歌曲(一对多关系) + 删除歌单时级联删除歌曲
|
||||||
|
@OneToMany(mappedBy = "playlist", cascade = CascadeType.ALL, orphanRemoval = true)
|
||||||
private List<Song> songs = new ArrayList<>();
|
private List<Song> songs = new ArrayList<>();
|
||||||
|
|
||||||
protected Playlist() {
|
public Playlist() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 带参数的构造方法(方便创建歌单)
|
||||||
public Playlist(String name, User owner) {
|
public Playlist(String name, User owner) {
|
||||||
this.name = name;
|
this.name = name;
|
||||||
this.owner = owner;
|
this.owner = owner;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 维护双向关系:添加歌曲到歌单
|
||||||
|
public void addSong(Song song) {
|
||||||
|
songs.add(song);
|
||||||
|
song.setPlaylist(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 维护双向关系:从歌单移除歌曲
|
||||||
|
public void removeSong(Song song) {
|
||||||
|
songs.remove(song);
|
||||||
|
song.setPlaylist(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 必要的getter/setter方法
|
||||||
public Long getId() {
|
public Long getId() {
|
||||||
return id;
|
return id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setId(Long id) {
|
||||||
|
this.id = id;
|
||||||
|
}
|
||||||
|
|
||||||
public String getName() {
|
public String getName() {
|
||||||
return name;
|
return name;
|
||||||
}
|
}
|
||||||
@ -50,23 +77,15 @@ public class Playlist {
|
|||||||
return owner;
|
return owner;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setOwner(User owner) {
|
||||||
|
this.owner = owner;
|
||||||
|
}
|
||||||
|
|
||||||
public List<Song> getSongs() {
|
public List<Song> getSongs() {
|
||||||
return Collections.unmodifiableList(songs);
|
return songs;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public void setSongs(List<Song> songs) {
|
||||||
* 向歌单添加歌曲
|
this.songs = songs;
|
||||||
* 提示:需要维护双向关系
|
|
||||||
*/
|
|
||||||
public void addSong(Song song) {
|
|
||||||
// TODO: 实现添加歌曲逻辑
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
/**
|
|
||||||
* 从歌单移除歌曲
|
|
||||||
* 提示:需要维护双向关系
|
|
||||||
*/
|
|
||||||
public void removeSong(Song song) {
|
|
||||||
// TODO: 实现移除歌曲逻辑
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Loading…
Reference in New Issue
Block a user