有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案