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 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 removeSong(Song song) {
|
||||
// TODO: 实现移除歌曲逻辑
|
||||
public void setSongs(List<Song> songs) {
|
||||
this.songs = songs;
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user