如何解决Spring Boot中用于枚举的通用AttributeConverter
我想创建一个实现AttributeConverter的泛型类,并可以在所有枚举的@Converter批注中使用。 我有两个不同的枚举,每个枚举都有一个转换器类,但是两个转换器类都在做相同的事情。 以下是代码段。
public enum Type {
BASIC(1,"Basic"),ADVANCE(2,"Advance");
private final Integer id;
private final String name;
private Type(Integer id,String name) {
this.id = id;
this.name = name;
}
public static Type getType(Integer id) {
if (id == null) { return null; }
for (Type type: Type.values()) {
if (id == type.getId()) {
return type;
}
}
return null;
}
public Integer getId() { return id; }
public String getName() { return name; }
}
@Converter(autoApply = true)
public class TypeConverter implements AttributeConverter<Type,Integer> {
@Override
public Integer convertToDatabaseColumn(Type type) {
return type.getId();
}
@Override
public Type convertToEntityAttribute(Integer databaseValue) {
return Type.getType(databaseValue);
}
}
public enum State {
FIRST(1,"First"),SECOND(2,"Second");
private final Integer id;
private final String name;
private State(Integer id,String name) {
this.id = id;
this.name = name;
}
public static State getState(Integer id) {
if (id == null) { return null; }
for (State state: State.values()) {
if (id == state.getId()) {
return state;
}
}
return null;
}
public Integer getId() { return id; }
public String getName() { return name; }
}
@Converter(autoApply = true)
public class StateConverter implements AttributeConverter<State,Integer> {
@Override
public Integer convertToDatabaseColumn(State state) {
return state.getId();
}
@Override
public State convertToEntityAttribute(Integer databaseValue) {
return State.getState(databaseValue);
}
}
@Table(name = "um_user")
public class User
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
private String username;
private String password
@Convert(converter = TypeConverter.class)
private Type type;
@Convert(converter = StateConverter.class)
private State state;
}
现在,我想创建一个可以代替TypeConverter和StateConverter使用的通用转换器。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。