From 578f2987e59e3146dd4aa1bf12c1f904383d1651 Mon Sep 17 00:00:00 2001 From: Azure <983547216@qq.com> Date: Mon, 15 Jun 2026 16:47:36 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=95=B0=E6=8D=AE=E5=BA=93=E5=AE=9E?= =?UTF-8?q?=E4=BD=93=E5=9F=BA=E7=A1=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../webgamebackend/entities/UserEntity.java | 71 +++++++++++++++++++ .../entities/base/BaseEntity.java | 38 +++------- 2 files changed, 80 insertions(+), 29 deletions(-) create mode 100644 src/main/java/com/webgame/webgamebackend/entities/UserEntity.java diff --git a/src/main/java/com/webgame/webgamebackend/entities/UserEntity.java b/src/main/java/com/webgame/webgamebackend/entities/UserEntity.java new file mode 100644 index 0000000..0a4a52b --- /dev/null +++ b/src/main/java/com/webgame/webgamebackend/entities/UserEntity.java @@ -0,0 +1,71 @@ +package com.webgame.webgamebackend.entities; + +import com.webgame.webgamebackend.entities.base.UUIDBaseEntity; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.FetchType; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.OneToOne; +import jakarta.persistence.Table; +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import lombok.experimental.Accessors; + +import java.time.LocalDate; + +/** + * 用户实体,与 AccountEntity 一对一关联 + */ +@Entity +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@Accessors(chain = true) +@Table(name = "user") +public class UserEntity extends UUIDBaseEntity { + /** + * 关联的账号 + */ + @OneToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "account_id", referencedColumnName = "id", unique = true) + private AccountEntity account; + + /** + * 昵称 + */ + @Column(name = "nick_name", length = 16, nullable = false) + private String nickName; + + /** + * 头像 + */ + @Column(name = "avatar", length = 512) + private String avatar; + + /** + * 个性签名 + */ + @Column(name = "signature", length = 64) + private String signature; + + /** + * 年龄 + */ + @Column(name = "age") + private Integer age; + + /** + * 性别 1男 2女 + */ + @Column(name = "sex", length = 1) + private Integer sex; + + /** + * 生日 + */ + @Column(name = "birthday") + private LocalDate birthday; +} diff --git a/src/main/java/com/webgame/webgamebackend/entities/base/BaseEntity.java b/src/main/java/com/webgame/webgamebackend/entities/base/BaseEntity.java index 6d5f2a5..7dcdc2f 100644 --- a/src/main/java/com/webgame/webgamebackend/entities/base/BaseEntity.java +++ b/src/main/java/com/webgame/webgamebackend/entities/base/BaseEntity.java @@ -1,13 +1,12 @@ package com.webgame.webgamebackend.entities.base; -import jakarta.persistence.Column; -import jakarta.persistence.MappedSuperclass; -import jakarta.persistence.PrePersist; -import jakarta.persistence.PreUpdate; +import jakarta.persistence.*; import lombok.Getter; import lombok.Setter; import lombok.experimental.Accessors; -import lombok.extern.slf4j.Slf4j; +import org.springframework.data.annotation.CreatedDate; +import org.springframework.data.annotation.LastModifiedDate; +import org.springframework.data.jpa.domain.support.AuditingEntityListener; import java.io.Serializable; import java.time.LocalDateTime; @@ -19,38 +18,19 @@ import java.time.LocalDateTime; @Setter @Accessors(chain = true) // 允许链式调用 @MappedSuperclass // 表示该类不会映射到数据库表 +@EntityListeners(AuditingEntityListener.class) public abstract class BaseEntity implements Serializable { /** * 创建时间 */ - @Column(name = "create_time") + @CreatedDate + @Column(name = "create_time", updatable = false) protected LocalDateTime createTime; + /** * 更新时间 */ + @LastModifiedDate @Column(name = "update_time") protected LocalDateTime updateTime; - - @PrePersist - private void preEntityCreateTime() { - this.createTime = LocalDateTime.now(); - } - - @PreUpdate - private void preEntityUpdateTime() { - this.updateTime = LocalDateTime.now(); - } } - - -/** - * pre 插入数据库前,可以影响插入数据 - * post 插入数据库后,已完成插入,无法再改变字段值 - * @PrePersist:在实体被持久化之前调用。 - * @PreRemove:在实体被删除之前调用。 - * @PostPersist:在实体被持久化之后调用。 - * @PostRemove:在实体被删除之后调用。 - * @PostLoad:在实体被加载到持久化上下文后调用。 - * @PreUpdate:在实体更新之前调用。 - * @PostUpdate:在实体更新之后调用。 - */