更新 src/main/java/com/vibevault/model/Playlist.java
Some checks are pending
autograde-final-vibevault / check-trigger (push) Waiting to run
autograde-final-vibevault / grade (push) Blocked by required conditions

This commit is contained in:
张雪尔 2025-12-22 04:09:18 +08:00
parent 3830a3b051
commit ac12b72751

View File

@ -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: 实现移除歌曲逻辑
} }
} }