4

Я хотел бы код не бросает исключение, когда ява код нагрузки значение перечисления из Монго, что не существует в перечислимом кодвесна отображение MongoDB данных перечисление конвертер

Exemple:

java.lang.IllegalArgumentException: No enum constant fr.myapp.type.OrderOptionEnum.TELEPHONE 
at java.lang.Enum.valueOf(Enum.java:238) 
at org.springframework.data.mongodb.core.convert.MappingMongoConverter.getPotentiallyConvertedSimpleRead(MappingMongoConverter.java:819) 
at org.springframework.data.mongodb.core.convert.MappingMongoConverter.readCollectionOrArray(MappingMongoConverter.java:909) 
at org.springframework.data.mongodb.core.convert.MappingMongoConverter.readValue(MappingMongoConverter.java:1184) 

Поскольку ТЕЛЕФОН не Existe в OrderOptionEnum

I juste want code return null value

Любая идея?

С уважением

+0

Я думаю, вам нужно создать пользовательский ConverterFactory: http://stackoverflow.com/a/30024621/641627 – alexbt

+0

Это старый, но может помочь вам (он обертывает его перечисление): https: // ghads .wordpress.com/2011/04/12/MongoDB-и-ява-перечислений – alexbt

ответ

1

вы можете добавить пользовательский конвертер реализовать Converter<String, OrderOptionEnum> там вы реализуете свою собственную логику конвертировать из строки в ваше перечисление.

что-то вроде этого

public class OrderOptionEnumMongoConverter implements Converter<String, OrderOptionEnum> { 

    @Override 
    public OrderOptionEnum convert(String source) { 

     for (OrderOptionEnum OrderOptionEnum : OrderOptionEnum.values()) { 
      if (OrderOptionEnum.name().equals(source)) 
       return OrderOptionEnum; 
     } 

     return null; 
    } 
} 

Обратите внимание !!! Этот конвертор попытается преобразовать каждую строку в mongo в ваш enum, таким образом, это может привести к нежелательным преобразованиям, поэтому убедитесь, что вы делаете это только тогда, когда это необходимо. вы можете добавить @ReadingConverter, если вы хотите, чтобы этот конвертировать только при чтении из монго.

 Смежные вопросы

  • Нет связанных вопросов^_^