package com.hr.staff.entity; import jakarta.persistence.Column; import jakarta.persistence.Entity; import jakarta.persistence.GeneratedValue; import jakarta.persistence.GenerationType; import jakarta.persistence.Id; import jakarta.persistence.PrePersist; import jakarta.persistence.PreUpdate; import jakarta.persistence.Table; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; import java.time.LocalDate; import java.time.LocalDateTime; /** * 员工主表 staff_employee。 */ @Entity @Table(name = "staff_employee") @Getter @Setter @NoArgsConstructor public class StaffEmployee { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(name = "employee_no", nullable = false, length = 32, unique = true) private String employeeNo; @Column(name = "name", nullable = false, length = 64) private String name; /** 身份证号,应用层加密后存储。 */ @Column(name = "id_number", nullable = false, length = 64, unique = true) private String idNumber; @Column(name = "gender") private Integer gender; @Column(name = "department_id", nullable = false) private Long departmentId; @Column(name = "department_name", length = 128) private String departmentName; @Column(name = "position", nullable = false, length = 128) private String position; @Column(name = "hire_date", nullable = false) private LocalDate hireDate; @Column(name = "phone", length = 20) private String phone; @Column(name = "email", length = 128) private String email; @Column(name = "emergency_contact", length = 64) private String emergencyContact; @Column(name = "emergency_phone", length = 20) private String emergencyPhone; @Column(name = "status", nullable = false, length = 16) private String status = "active"; @Column(name = "created_by") private Long createdBy; @Column(name = "updated_by") private Long updatedBy; @Column(name = "created_at", nullable = false) private LocalDateTime createdAt; @Column(name = "updated_at", nullable = false) private LocalDateTime updatedAt; @PrePersist void onCreate() { if (status == null) { status = "active"; } if (createdAt == null) { createdAt = LocalDateTime.now(); } if (updatedAt == null) { updatedAt = LocalDateTime.now(); } } @PreUpdate void onUpdate() { updatedAt = LocalDateTime.now(); } }