2311061234/src/main/java/com/vibevault/model/Playlist.java
1234 208e089093
Some checks failed
autograde-final-vibevault / check-trigger (push) Successful in 3s
autograde-final-vibevault / grade (push) Failing after 39s
完成作业
2025-12-23 19:17:44 +08:00

91 lines
2.3 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package com.vibevault.model;
import jakarta.persistence.*;
import java.util.ArrayList;
import java.util.List;
/**
* 歌单实体类
*
* 需要实现:
* - 将此类映射为数据库表 "playlists"
* - id 作为自增主键
* - name 不能为空
* - 每个歌单属于一个用户(多对一关系)
* - 一个歌单包含多首歌曲(一对多关系)
* - 删除歌单时应级联删除其中的歌曲
*/
@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<>();
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;
}
public void setName(String name) {
this.name = name;
}
public User getOwner() {
return owner;
}
public void setOwner(User owner) {
this.owner = owner;
}
public List<Song> getSongs() {
return songs;
}
public void setSongs(List<Song> songs) {
this.songs = songs;
}
}