数据库中对应的字段类型是varchar,而pojo中的对应字段数据类型是枚举类型,利用注解分别改变对应的映射方法,进行持久化和读取。
package cn.pickle.spring;
import lombok.AccessLevel;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.RequiredArgsConstructor;
import javax.persistence.*;
/**
* @author Pickle
* @version V1.0
* @date 2022/9/3 8:03
*/
@Data
@RequiredArgsConstructor
@Entity
public class Ingredient {
@Id
private String id;
private String name;
@Transient
//向数据库持久化的时候不持久化该属性
private Type type;
@Access(AccessType.PROPERTY)
//@Access(PROPERTY)注解表示向数据库中写数据的时候写入的值通过此函数确定
@Column(name = "type")
protected String getType() {
return type.getDatabaseValue();
}
//从数据库获取值的时候调用此方法来确定值
protected void setType(String type){
this.type = Type.valueOf(type);
}
public String Type(){
return this.type.name();
}
public static enum Type {
WRAP("WRAP"),
PROTEIN("PROTEIN"),
VEGGIES("VEGGIES"),
CHEESE("CHEESE"),
SAUCE("SAUCE");
private String databaseValue;
Type(String databaseValue) {
this.databaseValue = databaseValue;
}
public String getDatabaseValue() {
return databaseValue;
}
public void setDatabaseValue(String databaseValue) {
this.databaseValue = databaseValue;
}
}
}