package com.yoyuzh.auth; import jakarta.persistence.Column; import jakarta.persistence.Entity; import jakarta.persistence.GeneratedValue; import jakarta.persistence.GenerationType; import jakarta.persistence.Id; import jakarta.persistence.Index; import jakarta.persistence.PrePersist; import jakarta.persistence.Table; import java.time.LocalDateTime; @Entity @Table(name = "portal_user", indexes = { @Index(name = "uk_user_username", columnList = "username", unique = true), @Index(name = "uk_user_email", columnList = "email", unique = true), @Index(name = "idx_user_created_at", columnList = "created_at") }) public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(nullable = false, length = 64, unique = true) private String username; @Column(nullable = false, length = 128, unique = true) private String email; @Column(name = "password_hash", nullable = false, length = 255) private String passwordHash; @Column(name = "created_at", nullable = false) private LocalDateTime createdAt; @PrePersist public void prePersist() { if (createdAt == null) { createdAt = LocalDateTime.now(); } } 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 getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getPasswordHash() { return passwordHash; } public void setPasswordHash(String passwordHash) { this.passwordHash = passwordHash; } public LocalDateTime getCreatedAt() { return createdAt; } public void setCreatedAt(LocalDateTime createdAt) { this.createdAt = createdAt; } }