2013-11-11 3 views
3

Почему это не работает с бульдозером? Что мне нужно сделать, чтобы это произошло? У нас есть gazillion перечисления, и иногда нам просто нужно сопоставить их. В любом случае мы могли бы просто настроить dozer, чтобы сделать это без написания пользовательских материалов?Отображение нумератора на карте перечисления

enum EnumOne{ TEST1, TEST2 } 
enum EnumTwo{ TEST1, TEST2 } 

Mapper dozerMapper; 

dozerMapper.map(EnumOne.TEST1, EnumTwo.class); 
+0

Вы решили это? если да, можете ли вы предоставить свое решение? Я сталкиваюсь с той же проблемой. Перечисления отображаются точно, когда они отображаются как часть более крупного POJO, но если я просто хочу отображать только Enum, это не сработает. – black666

+0

Нет, в итоге написано настраиваемое отображение для перечислений. У наших картографов есть внутреннее устройство для работы с дозатором, и теперь они происходят из базового класса, который может отображать перечисления по имени. – tuxbear

ответ

0

Это не работает, потому что Dozer полагается на существование публичного конструктора, который является незаконным для перечисления. Вы можете вывести это из исключения при попытке сопоставить их:

Exception in thread "main" org.dozer.MappingException: 
java.lang.NoSuchMethodException: DestinationEnum.<init>() 

Он ищет конструктора, который не существует.

Нет никакого способа обойти это, за исключением случаев, когда черный666 сказал, что он является частью большего ПОЖО. Так было показано в documentation.

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