【发布时间】:2021-04-24 10:22:44
【问题描述】:
我正在创建具有不同维修类型的维修服务。我有一个 SINGLE_TABLE 继承,我用 Enum repair_Type 区分它们,我还希望将 Repair_Type 作为一列,这样我就可以按类型对修复进行排序和搜索,但我得到了No enum constant 异常。
这是我的代码:
@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(discriminatorType = DiscriminatorType.STRING)
public abstract class Repair {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
public long repairID;
@ManyToOne
private Customer customerID;
@Enumerated(EnumType.STRING)
private RepairType repairType;
@OneToMany
private List<Employee> employeeList;
@Enumerated(EnumType.STRING)
private DeliveryOption deliveryOption;
private boolean expressRepair;
private boolean cleanProduct;
@Column(length = 64)
private String productImage;
@OneToOne
private Brand brand;
private String model;
private int size;
private int buildYear;
@Temporal(TemporalType.TIMESTAMP)
private Date dateCreated;
@Column(nullable = false)
private String repairNote;
}
No getters and setters for brevity
修复类型:
public enum RepairType {
KITE(Types.KITE),
BOARD(Types.BOARD),
BAR(Types.BAR),
WETSUIT(Types.WETSUIT);
private String type;
RepairType(String type) {
}
public static class Types {
public static final String KITE = "Kite";
public static final String BOARD = "Board";
public static final String BAR = "Bar";
public static final String WETSUIT = "Wetsuit";
}
}
子类修复类型示例(我有四个)
@Entity
@DiscriminatorValue(value = RepairType.Types.BAR)
public class BarRepair extends Repair {
private boolean lengthCheck;
public BarRepair() {
}
public BarRepair(long repairID, Customer customerID, List<Employee> employeeList, DeliveryOption deliveryOption, boolean expressRepair, boolean cleanProduct, String productImage, Brand brand, String model, int size, int buildYear, Date dateCreated, String repairNote, boolean lengthCheck) {
super(repairID, customerID, employeeList, deliveryOption, expressRepair, cleanProduct, productImage, brand, model, size, buildYear, dateCreated, repairNote);
this.lengthCheck = lengthCheck;
}
public boolean isLengthCheck() {
return lengthCheck;
}
public void setLengthCheck(boolean lengthCheck) {
this.lengthCheck = lengthCheck;
}
}
【问题讨论】:
标签: java spring-boot hibernate jpa enums