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 使用我映射这两种类型的方式?