更新时间:2023-01-17 08:31:28
我不知道这是否是***的方法,但我在 Spring Data MongoDB 中添加了 Java 8 Date/Time (JSR-310) 类型支持 1.5.0.RELEASE
像这样:
I don't know if this is the best way but I added Java 8 Date/Time (JSR-310) types support to Spring Data MongoDB 1.5.0.RELEASE
like this:
第一步.添加简单的 Spring Converter
s
public class InstantToLongConverter implements Converter<Instant, Long> {
@Override
public Long convert(Instant instant) {
return instant.toEpochMilli();
}
}
public class LongToInstantConverter implements Converter<Long, Instant> {
@Override
public Instant convert(Long source) {
return Instant.ofEpochMilli(source);
}
}
public class LocalDateToStringConverter implements Converter<LocalDate, String> {
@Override
public String convert(LocalDate localDate) {
return localDate.toString();
}
}
public class StringToLocalDateConverter implements Converter<String, LocalDate> {
@Override
public LocalDate convert(String source) {
return LocalDate.parse(source);
}
}
第二步.在 AbstractMongoConfiguration
实现中使用 MappingMongoConverter
注册这些自定义 Converter
,如下所示:
Second step. Register these custom Converter
s with MappingMongoConverter
in your AbstractMongoConfiguration
implementation like this:
@Configuration
@EnableMongoRepositories(basePackages = {"my.app.repository"})
public class MongoConfiguration extends AbstractMongoConfiguration {
...
@Override
public CustomConversions customConversions() {
return new CustomConversions(Arrays.asList(
new InstantToLongConverter(), new LongToInstantConverter(),
new LocalDateToStringConverter(), new StringToLocalDateConverter()));
}
}
现在您的文档的 Instant
字段将作为长值和 LocalDate
s 作为字符串持久化.
Now your document's Instant
fields will be persisted as long values and LocalDate
s as Strings.