Sha*_*ark 5 java spring mongodb java-time
尝试在java.time.OffsetDateTimeMongoDB中使用新对象。我正在使用org.springframework.data:spring-data-mongodb:1.8.2.RELEASE。它似乎可以正常写入数据库,但是当我尝试读取数据时,它将引发以下异常。如果我改为将对象更改为just LocalDateTime,则它能够成功读取/写入数据库。我是否需要做其他配置才能添加对OffsetDateTime对象的支持?
org.springframework.data.mapping.model.MappingException: No property null found on entity class java.time.OffsetDateTime to bind constructor parameter to!
at org.springframework.data.mapping.model.PersistentEntityParameterValueProvider.getParameterValue(PersistentEntityParameterValueProvider.java:74) ~[spring-data-commons-1.11.2.RELEASE.jar!/:na]
at org.springframework.data.mapping.model.SpELExpressionParameterValueProvider.getParameterValue(SpELExpressionParameterValueProvider.java:63) ~[spring-data-commons-1.11.2.RELEASE.jar!/:na]
at org.springframework.data.convert.ReflectionEntityInstantiator.createInstance(ReflectionEntityInstantiator.java:71) ~[spring-data-commons-1.11.2.RELEASE.jar!/:na]
at org.springframework.data.convert.ClassGeneratingEntityInstantiator.createInstance(ClassGeneratingEntityInstantiator.java:83) ~[spring-data-commons-1.11.2.RELEASE.jar!/:na]
at org.springframework.data.mongodb.core.convert.MappingMongoConverter.read(MappingMongoConverter.java:251) ~[spring-data-mongodb-1.8.2.RELEASE.jar!/:na]
at org.springframework.data.mongodb.core.convert.MappingMongoConverter.read(MappingMongoConverter.java:231) ~[spring-data-mongodb-1.8.2.RELEASE.jar!/:na]
at org.springframework.data.mongodb.core.convert.MappingMongoConverter.readValue(MappingMongoConverter.java:1186) ~[spring-data-mongodb-1.8.2.RELEASE.jar!/:na]
at org.springframework.data.mongodb.core.convert.MappingMongoConverter.access$200(MappingMongoConverter.java:78) ~[spring-data-mongodb-1.8.2.RELEASE.jar!/:na]
at org.springframework.data.mongodb.core.convert.MappingMongoConverter$MongoDbPropertyValueProvider.getPropertyValue(MappingMongoConverter.java:1134) ~[spring-data-mongodb-1.8.2.RELEASE.jar!/:na]
at org.springframework.data.mongodb.core.convert.MappingMongoConverter.getValueInternal(MappingMongoConverter.java:870) ~[spring-data-mongodb-1.8.2.RELEASE.jar!/:na]
at org.springframework.data.mongodb.core.convert.MappingMongoConverter$1.doWithPersistentProperty(MappingMongoConverter.java:283) ~[spring-data-mongodb-1.8.2.RELEASE.jar!/:na]
at org.springframework.data.mongodb.core.convert.MappingMongoConverter$1.doWithPersistentProperty(MappingMongoConverter.java:271) ~[spring-data-mongodb-1.8.2.RELEASE.jar!/:na]
at org.springframework.data.mapping.model.BasicPersistentEntity.doWithProperties(BasicPersistentEntity.java:309) ~[spring-data-commons-1.11.2.RELEASE.jar!/:na]
at org.springframework.data.mongodb.core.convert.MappingMongoConverter.read(MappingMongoConverter.java:271) ~[spring-data-mongodb-1.8.2.RELEASE.jar!/:na]
at org.springframework.data.mongodb.core.convert.MappingMongoConverter.read(MappingMongoConverter.java:231) ~[spring-data-mongodb-1.8.2.RELEASE.jar!/:na]
Run Code Online (Sandbox Code Playgroud)
因此,当前的 JSR-310 支持似乎仅适用于非时区日期对象。这可以解释为什么 OffsetDateTime 不起作用。
https://spring.io/blog/2015/03/26/what-s-new-in-spring-data-fowler
这一设置将确保您的应用程序包和 JSR-310 转换器的 Spring Data JPA 包都将被扫描并交给持久性提供者。在我们的 Spring Data Examples 存储库中找到完整的示例。请注意,由于转换器只是将 JSR-310 类型转换为旧版 Date 实例,因此仅支持非时区(例如 LocalDateTime 等)。
我可以通过使用 Joda DateTime 对象来解决这个问题。我必须执行以下操作:
compile('com.fasterxml.jackson.datatype:jackson-datatype-joda:2.6.3')到 gradle.build 文件。spring.jackson.serialization.write_dates_as_timestamps=false到 application.properties 文件以使输出易于阅读。import org.joda.time.DateTime;并使用它代替 OffsetDateTime| 归档时间: |
|
| 查看次数: |
4052 次 |
| 最近记录: |