You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
76 lines
1.7 KiB
76 lines
1.7 KiB
package com.gym.model;
|
|
|
|
import jakarta.persistence.*;
|
|
import lombok.Data;
|
|
import java.time.LocalDate;
|
|
import java.util.ArrayList;
|
|
import java.util.List;
|
|
|
|
@Entity
|
|
@Table(name = "equipment")
|
|
@Data
|
|
public class Equipment {
|
|
@Id
|
|
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
|
private Long id;
|
|
|
|
@Column(nullable = false, length = 100)
|
|
private String name;
|
|
|
|
@Column(length = 50)
|
|
private String model;
|
|
|
|
@Column(length = 50)
|
|
private String brand;
|
|
|
|
@Column(length = 20)
|
|
private String status = "NORMAL";
|
|
|
|
@Column(length = 100)
|
|
private String location;
|
|
|
|
@Column(name = "purchase_date")
|
|
private LocalDate purchaseDate;
|
|
|
|
@Column(name = "usage_count", nullable = false)
|
|
private Integer usageCount = 0;
|
|
|
|
@Column(name = "last_maintenance")
|
|
private LocalDate lastMaintenance;
|
|
|
|
@Column(name = "next_maintenance")
|
|
private LocalDate nextMaintenance;
|
|
|
|
@Column(length = 500)
|
|
private String description;
|
|
|
|
private Double price;
|
|
|
|
@Column(name = "is_available")
|
|
private Boolean isAvailable = true;
|
|
|
|
@Column(name = "created_at")
|
|
private LocalDate createdAt;
|
|
|
|
@Column(name = "updated_at")
|
|
private LocalDate updatedAt;
|
|
|
|
// 维护记录(非数据库映射字段)
|
|
@Transient
|
|
private List<MaintenanceRecord> maintenanceRecords = new ArrayList<>();
|
|
|
|
@PrePersist
|
|
protected void onCreate() {
|
|
if (createdAt == null) {
|
|
createdAt = LocalDate.now();
|
|
}
|
|
if (updatedAt == null) {
|
|
updatedAt = LocalDate.now();
|
|
}
|
|
}
|
|
|
|
@PreUpdate
|
|
protected void onUpdate() {
|
|
updatedAt = LocalDate.now();
|
|
}
|
|
} |