更新 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 java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
* 歌单实体类
*
* 需要实现
*
* 需要实现:
* - 将此类映射为数据库表 "playlists"
* - id 作为自增主键
* - name 不能为空
@ -16,28 +15,56 @@ import java.util.List;
* - 一个歌单包含多首歌曲一对多关系
* - 删除歌单时应级联删除其中的歌曲
*/
@Entity // 实现将此类映射为数据库表
@Table(name = "playlists") // 实现指定表名为"playlists"
public class Playlist {
@Id // 实现标记id为主键
@GeneratedValue(strategy = GenerationType.IDENTITY) // 实现id作为自增主键
private Long id;
@Column(nullable = false) // 实现name不能为空
private String name;
// 实现每个歌单属于一个用户多对一关系
@ManyToOne(fetch = FetchType.LAZY, optional = false) // 多对一用户不能为空
@JoinColumn(name = "user_id") // 数据库中关联用户的字段名
private User owner;
// 实现一个歌单包含多首歌曲一对多关系 + 删除歌单时级联删除歌曲
@OneToMany(mappedBy = "playlist", cascade = CascadeType.ALL, orphanRemoval = true)
private List<Song> songs = new ArrayList<>();
protected Playlist() {
public Playlist() {
}
// 带参数的构造方法方便创建歌单
public Playlist(String name, User owner) {
this.name = name;
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() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
@ -50,23 +77,15 @@ public class Playlist {
return owner;
}
public void setOwner(User owner) {
this.owner = owner;
}
public List<Song> getSongs() {
return Collections.unmodifiableList(songs);
return songs;
}
/**
* 向歌单添加歌曲
* 提示需要维护双向关系
*/
public void addSong(Song song) {
// TODO: 实现添加歌曲逻辑
public void setSongs(List<Song> songs) {
this.songs = songs;
}
/**
* 从歌单移除歌曲
* 提示需要维护双向关系
*/
public void removeSong(Song song) {
// TODO: 实现移除歌曲逻辑
}
}
}