From e520acabf93227c447f8db40b7cab521ba2a5d49 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:54 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20src/main/java/com/vibevaul?= =?UTF-8?q?t/model/Song.java?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/vibevault/model/Song.java | 40 +++++++++++++++++++-- 1 file changed, 37 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/vibevault/model/Song.java b/src/main/java/com/vibevault/model/Song.java index 953c654..ec3f168 100644 --- a/src/main/java/com/vibevault/model/Song.java +++ b/src/main/java/com/vibevault/model/Song.java @@ -4,14 +4,18 @@ import jakarta.persistence.*; /** * 歌曲实体类 - * - * 需要实现: + * + * 需要实现: * - 将此类映射为数据库表 "songs" * - id 作为自增主键 * - 每首歌曲属于一个歌单(多对一关系) */ +@Entity // 实现:将此类映射为数据库表 +@Table(name = "songs") // 实现:指定表名为"songs" public class Song { + @Id // 实现:标记id为主键 + @GeneratedValue(strategy = GenerationType.IDENTITY) // 实现:id作为自增主键 private Long id; private String title; @@ -20,33 +24,63 @@ public class Song { private int durationInSeconds; + // 实现:每首歌曲属于一个歌单(多对一关系) + @ManyToOne(fetch = FetchType.LAZY, optional = false) // 多对一,歌单不能为空 + @JoinColumn(name = "playlist_id") // 数据库中关联歌单的字段名 private Playlist playlist; + // JPA必须的无参构造(protected改为public,方便测试) public Song() { } + // 适配测试代码的构造方法(不带Playlist参数) public Song(String title, String artist, int durationInSeconds) { this.title = title; this.artist = artist; this.durationInSeconds = durationInSeconds; } + // 业务用的构造方法(带Playlist参数) + public Song(String title, String artist, int durationInSeconds, Playlist playlist) { + this.title = title; + this.artist = artist; + this.durationInSeconds = durationInSeconds; + this.playlist = playlist; + } + + // 必要的getter/setter方法 public Long getId() { return id; } + public void setId(Long id) { + this.id = id; + } + public String getTitle() { return title; } + public void setTitle(String title) { + this.title = title; + } + public String getArtist() { return artist; } + public void setArtist(String artist) { + this.artist = artist; + } + public int getDurationInSeconds() { return durationInSeconds; } + public void setDurationInSeconds(int durationInSeconds) { + this.durationInSeconds = durationInSeconds; + } + public Playlist getPlaylist() { return playlist; } @@ -54,4 +88,4 @@ public class Song { public void setPlaylist(Playlist playlist) { this.playlist = playlist; } -} +} \ No newline at end of file