Orika 有一套“BuiltinConverters”
但是将 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 使用我的方式来映射这两种类型?
最佳答案
我自己找到了答案。
问题是,内置转换器是“Bi DirectionConverter”,我使用“CustomConverter”,因为我只对以一种方式更改映射感兴趣:XML --> Date。将其更改为双向解决了问题。
关于java - 是否可以覆盖 Orika 的内置转换器 - XMLGregorianCalendar 到 java.util.Date?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44648535/