我有一个带有Java 8日期/时间字段的简单文档
@Document
public class Token {
private Instant createdAt;
...
}
我想继续使用Spring Data MongoDB
1.5版。但是类型字段java.time.Instant
不能正确反序列化,因为MappingMongoConverter
缺少java.time
类的转换器。
在春季4中,我发现org.springframework.format.datetime.standard.DateTimeConverters
使用包含不同Converter
的,InstantToLongConverter
并将其LongToInstantConverter
声明为私有静态类。
如何配置MongoTemplate
使用它们将Instant
字段映射为long?
我不知道这是否是最好的方法,但是我向Spring Data MongoDB添加了Java 8 Date /
Time(JSR-310)类型支持,1.5.0.RELEASE
如下所示:
Converter
小号 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);
}
}
Converter
与S MappingMongoConverter
在AbstractMongoConfiguration
实现这样的: @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
作为字符串保留为long值和。
我有一个带有Java 8日期/时间字段的简单文档 我想坚持使用Spring Data MongoDB版本1.5。但是类型的字段无法正确反序列化,因为缺少类的转换器。 在Spring 4中,我发现具有不同的s,包括和声明为私有静态类。 如何配置MongoTemplate以使用它们将即时字段映射到长字段?
我需要一些解释为什么这个代码不编译: 错误: 类型Duration中的(TemporalAmount)方法不适用于参数(ChronoUnit) 正如本文所述: public static Duration from(TemporalAmount amount)从时间量中获取持续时间的实例。这将根据指定的金额获得持续时间。TemporalAmount表示一个时间量,可以是基于日期的,也可以是基于时间
在Java8次/JSR 310/threeten.orgbackport... 问:如何解析日期部分和时间部分之间带有“T”或“空格”的ISO-8601时间戳? ISO-8601时间戳格式指定了文字“T”,以将日期规范与时间规范分开: 许多应用程序以这种格式生成时间戳,并使用空格“char”而不是“T”。参考文献表明,ISO-8601允许通过相互协议实现这一点。 因为我从多个来源摄取数据,所以我想
主要内容:YEAR 类型,TIME 类型,DATE 类型,DATETIME 类型,TIMESTAMP 类型MySQL 中有多处表示日期的数据类型: YEAR、 TIME、 DATE、 DTAETIME、 TIMESTAMP。当只记录年信息的时候,可以只使用 YEAR 类型。 每一个类型都有合法的取值范围,当指定确定不合法的值时,系统将“零”值插入数据库中。 下表中列出了 MySQL 中的日期与时间类型。 类型名称 日期格式 日期范围 存储需求 YEAR YYYY 1901 ~ 2155 1 个字
11.3.1. DATETIME、DATE和TIMESTAMP类型 11.3.2. TIME类型 11.3.3. YEAR类型 11.3.4. Y2K事宜和日期类型 表示时间值的DATE和时间类型为DATETIME、DATE、TIMESTAMP、TIME和YEAR。每个时间类型有一个有效值范围和一个“零”值,当指定不合法的MySQL不能表示的值时使用“零”值。TIMESTAMP类型有专有的自动更新
何时何地哪个更可取? 我不知道他们之间到底有什么区别。 来自LocalDateTime的文档 ...时间表示为纳秒精度。例如,值“2007 年 10 月 2 日 13:45.30.123456789”可以存储在 LocalDateTime 中。 我假设LocalDateTime也可以接受纳秒。所以我想,我可以用LocalDateTime替换我的代码,它们被声明为TimeStamp。如果我错了,请纠