java是否可以定义如何对枚举进行(反)序列化以在枚举内持久化?
我有一个使用JPA和hibernate的SpringBoot项目
假设有一个enumCode
表示一个简单的http状态代码:
public enum Code {
OK,
NOT_FOUND
}
假设此枚举有一个名为CodeConverter
的转换器:
@Converter
public class CodeConverter implements AttributeConverter<Code, Integer> {
@Override
public Integer convertToDatabaseColumn(Code code) {
if (code == Code.OK) return 200;
if (code == Code.NOT_FOUND) return 404;
return null;
}
@Override
public Code convertToEntityAttribute(Integer integer) {
if (integer == 200) return Code.OK;
if (integer == 404) return Code.NOT_FOUND;
return null;
}
}
在不知道什么实体使用Code
的情况下,我可以在Code
内指定Code
应该始终使用CodeConverter
进行(反)序列化吗例如:
@UseConverter(CodeConverter.class)
public enum Code {
...
我知道CodeConverter
的@Converter(autoApply = true)
注释,但据我所知,这仅在Spring引导配置中@EntityScan
扫描CodeConverter
时有效。对于我的用例,我不能依赖于此
# 1 楼答案
根据您使用的JPA版本,您可以考虑使用<强> @ POST Load 和<强> @ PrimestEng/St>来进行您需要的翻译:
本文展示了一个很好的示例: https://www.baeldung.com/jpa-persisting-enums-in-jpa