根据枚举值使用AtrributeConverter转换变量的值

时间:2018-12-08 09:18:40

标签: java spring jpa type-conversion

我最近了解了AttributeConverter 。我有不同数据类型的值,这些值应作为对象传递到convertToDatabaseColumn函数中,并应返回一个字符串。但是,在将其转换回convertToEntityAttribute(String dbData)中的对象时,我必须根据实体中的枚举变量将值转换为不同的数据类型,最后将其作为对象返回。为了进一步处理,将检查对象值是否为特定数据类型的实例。除了需要转换的值之外,我无法找到将任何其他值传递给转换器的方法。有什么办法可以实现它?

public class entityClass{
  EnumType enumValue;

  @Lob
  @Converter(myconverter.class)
  Object valueToConvert;

 //constructor, getters and setters
 }

`从数据库转换回时,它会基于enumType值转换为不同的数据类型。我可以以某种方式将此枚举值传递给我的转换器类进行比较吗?

2 个答案:

答案 0 :(得分:0)

我解决这个问题的想法是-将enumValuevalueToConvert包装在包装类中。 然后为此包装类编写一个转换器。转换器可以将包装器类转换为定界字符串,json或任何您想要的东西。从数据库读取时,解析此字符串并构建包装对象。 但是,我同意daniu的评论,认为这不是一个好的设计。

答案 1 :(得分:0)

在转换器类中,可以包含所有枚举类及其值。这样您就可以检查并转换为正确的数据类型

for (EnumType enum : EnumType.values()) {
    // do what you want
}