如何用 Orika 映射 java.time.LocalDate 字段?
How to map java.time.LocalDate field with Orika?
发生这种情况是因为 LocalDate 不是 JavaBean(它没有零参数构造函数)
要解决此问题,您需要创建一个 LocalDateConverter :
public class LocalDateConverter extends BidirectionalConverter<LocalDate, LocalDate> {
@Override
public LocalDate convertTo(LocalDate source, Type<LocalDate> destinationType) {
return (source);
}
@Override
public LocalDate convertFrom(LocalDate source, Type<LocalDate> destinationType) {
return (source);
}
}
然后注册它添加这一行:
mapperFactory.getConverterFactory().registerConverter(new LocalDateConverter());
作为快捷方式,您可以按照 Adam Michalik 的建议注册提供的 "PassThroughConverter",这样 Orika 就不会尝试实例化新的 "LocalDate" :
mapperFactory.getConverterFactory().registerConverter(new PassThroughConverter(LocalDate.class));
发生这种情况是因为 LocalDate 不是 JavaBean(它没有零参数构造函数)
要解决这个问题,您需要创建一个 LocalDateConverter :
public class LocalDateConverter extends BidirectionalConverter<LocalDate, LocalDate> {
@Override
public LocalDate convertTo(LocalDate source, Type<LocalDate> destinationType) {
return (LocalDate.from(source));
}
@Override
public LocalDate convertFrom(LocalDate source, Type<LocalDate> destinationType) {
return (LocalDate.from(source));
}
}
然后注册它添加这一行:
mapperFactory.getConverterFactory().registerConverter(new LocalDateConverter());
更好的是,由于 LocalDate
是不可变的,因此在源 bean 和目标 bean 中使用相同的对象没有什么坏处。您可以按如下方式配置 MapperFactory
:
mapperFactory.getConverterFactory().registerConverter(new PassThroughConverter(LocalDate.class));
OrikaMapper 已在 1.5.1 版本中修复此问题。
您可以将依赖项升级到 1.5.1,它应该会自动添加到那里。
无需添加转换器。
以下是 1.5.1 的发行说明:
https://github.com/orika-mapper/orika/issues/179
修复的 PR:
https://github.com/orika-mapper/orika/pull/178
<dependency>
<groupId>ma.glasnost.orika</groupId>
<artifactId>orika-core</artifactId>
<version>1.5.1</version>
</dependency>
发生这种情况是因为 LocalDate 不是 JavaBean(它没有零参数构造函数)
要解决此问题,您需要创建一个 LocalDateConverter :
public class LocalDateConverter extends BidirectionalConverter<LocalDate, LocalDate> {
@Override
public LocalDate convertTo(LocalDate source, Type<LocalDate> destinationType) {
return (source);
}
@Override
public LocalDate convertFrom(LocalDate source, Type<LocalDate> destinationType) {
return (source);
}
}
然后注册它添加这一行:
mapperFactory.getConverterFactory().registerConverter(new LocalDateConverter());
作为快捷方式,您可以按照 Adam Michalik 的建议注册提供的 "PassThroughConverter",这样 Orika 就不会尝试实例化新的 "LocalDate" :
mapperFactory.getConverterFactory().registerConverter(new PassThroughConverter(LocalDate.class));
发生这种情况是因为 LocalDate 不是 JavaBean(它没有零参数构造函数)
要解决这个问题,您需要创建一个 LocalDateConverter :
public class LocalDateConverter extends BidirectionalConverter<LocalDate, LocalDate> {
@Override
public LocalDate convertTo(LocalDate source, Type<LocalDate> destinationType) {
return (LocalDate.from(source));
}
@Override
public LocalDate convertFrom(LocalDate source, Type<LocalDate> destinationType) {
return (LocalDate.from(source));
}
}
然后注册它添加这一行:
mapperFactory.getConverterFactory().registerConverter(new LocalDateConverter());
更好的是,由于 LocalDate
是不可变的,因此在源 bean 和目标 bean 中使用相同的对象没有什么坏处。您可以按如下方式配置 MapperFactory
:
mapperFactory.getConverterFactory().registerConverter(new PassThroughConverter(LocalDate.class));
OrikaMapper 已在 1.5.1 版本中修复此问题。 您可以将依赖项升级到 1.5.1,它应该会自动添加到那里。 无需添加转换器。 以下是 1.5.1 的发行说明: https://github.com/orika-mapper/orika/issues/179
修复的 PR: https://github.com/orika-mapper/orika/pull/178
<dependency>
<groupId>ma.glasnost.orika</groupId>
<artifactId>orika-core</artifactId>
<version>1.5.1</version>
</dependency>