更新 src/main/java/com/vibevault/model/Song.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:54 +08:00
parent ac12b72751
commit e520acabf9

View File

@ -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;
}
}
}