feat: 数据库实体基础
This commit is contained in:
@@ -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;
|
||||||
|
}
|
||||||
@@ -1,13 +1,12 @@
|
|||||||
package com.webgame.webgamebackend.entities.base;
|
package com.webgame.webgamebackend.entities.base;
|
||||||
|
|
||||||
import jakarta.persistence.Column;
|
import jakarta.persistence.*;
|
||||||
import jakarta.persistence.MappedSuperclass;
|
|
||||||
import jakarta.persistence.PrePersist;
|
|
||||||
import jakarta.persistence.PreUpdate;
|
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
import lombok.experimental.Accessors;
|
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.io.Serializable;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
@@ -19,38 +18,19 @@ import java.time.LocalDateTime;
|
|||||||
@Setter
|
@Setter
|
||||||
@Accessors(chain = true) // 允许链式调用
|
@Accessors(chain = true) // 允许链式调用
|
||||||
@MappedSuperclass // 表示该类不会映射到数据库表
|
@MappedSuperclass // 表示该类不会映射到数据库表
|
||||||
|
@EntityListeners(AuditingEntityListener.class)
|
||||||
public abstract class BaseEntity implements Serializable {
|
public abstract class BaseEntity implements Serializable {
|
||||||
/**
|
/**
|
||||||
* 创建时间
|
* 创建时间
|
||||||
*/
|
*/
|
||||||
@Column(name = "create_time")
|
@CreatedDate
|
||||||
|
@Column(name = "create_time", updatable = false)
|
||||||
protected LocalDateTime createTime;
|
protected LocalDateTime createTime;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 更新时间
|
* 更新时间
|
||||||
*/
|
*/
|
||||||
|
@LastModifiedDate
|
||||||
@Column(name = "update_time")
|
@Column(name = "update_time")
|
||||||
protected LocalDateTime updateTime;
|
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:在实体更新之后调用。
|
|
||||||
*/
|
|
||||||
|
|||||||
Reference in New Issue
Block a user