Orika有一套“ BuiltinConverters”
https://github.com/orika-mapper/orika/blob/master/core/src/main/java/ma/glasnost/orika/converter/builtin/BuiltinConverters.java
但是,将XMLGregorianCalendar映射到java.util.Date的代码对我来说无法正常工作。我发现了一种以令人满意的结果映射它的方法,但是我找不到让Orika使用它而不是它自己的内置转换器的方法。我尝试在MapperDefinition中注册转换器:
public class MapperDefinition {
private final MapperFactory factory;
private final ConverterFactory converterFactory;
public MapperDefinition() {
factory = new DefaultMapperFactory.Builder().build();
converterFactory = factory.getConverterFactory();
converterFactory.registerConverter(new CustomConverter<XMLGregorianCalendar, Date>() {
@Override
public Date convert(XMLGregorianCalendar source, Type<? extends Date> destinationType) {
LocalDateTime ldt = LocalDateTime.of(source.getYear(), source.getMonth(),
source.getDay(), source.getHour(), source.getMinute(), source.getSecond());
return Date.from(ldt.atZone(ZoneId.systemDefault()).toInstant());
}
}
}
}
但是调试显示Orika似乎忽略了我的自定义转换器,仍然使用其自己的内置转换器。我也无法在Orika用户指南中找到有关覆盖它的任何信息:
https://orika-mapper.github.io/orika-docs/converters.html
有谁知道是否有可能让Orika使用我的方式映射这两种类型?
最佳答案
我自己找到了答案。
事实是,内置转换器是“ BidirectionalConverter”,而我使用了“ CustomConverter”,因为我只对以一种方式更改映射感兴趣:XML->日期。将其更改为双向可解决该问题。
关于java - 是否可以将Orika的内置转换器-XMLGregorianCalendar覆盖为java.util.Date?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44648535/