From ac12b72751b43609ffe526287c1fd0b60ab02eae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E9=9B=AA=E5=B0=94?= Date: Mon, 22 Dec 2025 04:09:18 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20src/main/java/com/vibevaul?= =?UTF-8?q?t/model/Playlist.java?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/vibevault/model/Playlist.java | 59 ++++++++++++------- 1 file changed, 39 insertions(+), 20 deletions(-) diff --git a/src/main/java/com/vibevault/model/Playlist.java b/src/main/java/com/vibevault/model/Playlist.java index 129868f..9e3c03f 100644 --- a/src/main/java/com/vibevault/model/Playlist.java +++ b/src/main/java/com/vibevault/model/Playlist.java @@ -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 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 getSongs() { - return Collections.unmodifiableList(songs); + return songs; } - /** - * 向歌单添加歌曲 - * 提示:需要维护双向关系 - */ - public void addSong(Song song) { - // TODO: 实现添加歌曲逻辑 + public void setSongs(List songs) { + this.songs = songs; } - - /** - * 从歌单移除歌曲 - * 提示:需要维护双向关系 - */ - public void removeSong(Song song) { - // TODO: 实现移除歌曲逻辑 - } -} +} \ No newline at end of file