diff --git a/src/main/java/com/vibevault/model/User.java b/src/main/java/com/vibevault/model/User.java index b4caa63..c5f5740 100644 --- a/src/main/java/com/vibevault/model/User.java +++ b/src/main/java/com/vibevault/model/User.java @@ -2,53 +2,76 @@ package com.vibevault.model; import jakarta.persistence.*; + /** * 用户实体类 - * - * 需要实现: + * 需要实现: * - 将此类映射为数据库表 "users" * - id 作为自增主键 * - username 必须唯一且不能为空 * - password 不能为空 * - [Challenge] 支持用户角色(如 ROLE_USER, ROLE_ADMIN) */ +@Entity // 实现:将此类映射为数据库表 +@Table(name = "users") // 实现:指定表名为"users" public class User { + @Id // 实现:标记id为主键 + @GeneratedValue(strategy = GenerationType.IDENTITY) // 实现:id作为自增主键 private Long id; + @Column(nullable = false, unique = true) // 实现:username必须唯一且不能为空 private String username; + @Column(nullable = false) // 实现:password不能为空 private String password; - // [Challenge] 用户角色,默认为 ROLE_USER - private String role = "ROLE_USER"; + // [Challenge] 支持用户角色(如 ROLE_USER, ROLE_ADMIN) + @Column(nullable = false) // 角色字段非空 + private String role = "ROLE_USER"; // 默认角色为ROLE_USER - protected User() { + // 无参构造(JPA必须) + public User() { } + // 2参数构造(用户名+密码) public User(String username, String password) { this.username = username; this.password = password; } + // 3参数构造(适配测试代码:用户名+密码+角色) public User(String username, String password, String role) { this.username = username; this.password = password; this.role = role; } + // 必须的getter/setter方法(JPA操作实体需要) public Long getId() { return id; } + public void setId(Long id) { + this.id = id; + } + public String getUsername() { return username; } + public void setUsername(String username) { + this.username = username; + } + public String getPassword() { return password; } + public void setPassword(String password) { + this.password = password; + } + public String getRole() { return role; } @@ -56,4 +79,4 @@ public class User { public void setRole(String role) { this.role = role; } -} +} \ No newline at end of file