我目前在一个被持久化的 Hibernate 类中有一个简单的字符串字段:
private String font = "Times New Roman";
"
"Times New Roman" 是默认值,所以许多存储的对象都具有该数据。出于几个原因,我想将其转换为枚举类型:
" @Enumerated(EnumType.String)
private FontEnum font = FontEnum.TIMES;
Hibernate使用Enum.valueOf(clazz, string)将列数据转换,但由于空格,它可能无法处理"Times New Roman"。
搜索建议无法重写Enum.valueOf(),其他人是否知道不同的方法?我能否欺骗Enum.valueOf()将"Times New Roman"转换为FontEnum.TIMES?
或者,我可以创建一个自定义的Hibernate转换器,例如:
public FontEnum legacyConverter(String old);
并添加
@Enumerated(EnumType.String)
@Converter(Converters.legacyConverter()) // Does this exist?
private FontEnum font = FontEnum.TIMES;
关于我的字段?我没有看到类似的东西。
我知道一种备用方法是添加一些预持久逻辑,将数据缓慢迁移到另一个列中,但我想避免这种情况。
谢谢 - 这是我在StackOverflow上的第一个问题!