当使用Spring Boot>=2.0.1.Release将ZonedDateTime保存到MongoDB时,我的问题就像这个CodecConfigurationException
但我编写了一个自定义的ZonedDateTime转换器:
@WritingConverter
public class ZonedDateTimeToDateConverter implements Converter<ZonedDateTime, Date> {
@Override
public Date convert(ZonedDateTime source) {
if (source == null) {
return null;
}
return Date.from(source.toInstant());
}
}
DateToZonedDateTimeConverter
@ReadingConverter
public class DateToZonedDateTimeConverter implements Converter<Date, ZonedDateTime> {
@Override
public ZonedDateTime convert(Date source) {
if (source == null) {
return null;
}
return ZonedDateTime.ofInstant(source.toInstant(), ZoneId.of("UTC"));
}
}
而我的测试:
@Autowired
ReactiveMongoOperations operations;
@Test
void test() {
ObjectId id = new ObjectId();
Document doc = new Document();
doc.append("_id", id);
// doc.append("a", ZonedDateTime.now()); // works
doc.append("zd1", new Document("f", ZonedDateTime.now())); // not working
operations.insert(doc, "test-collection").block();
Document found = Mono.from(operations.getCollection("test-collection")
.find(new Document("_id", id)).first()).block();
Assertions.assertNotNull(found);
}
如果我将一个ZDT实例添加到一个文档的第一级,像这样doc.append(“a”,zoneddatetime.now())
-document saves fine。但是,如果我将ZDT实例作为嵌套字段放置到文档(嵌套的第二级),则会收到一个异常:
我做错了什么?
我通过将转换器添加到自定义转换器配置来解决类似问题:
@Configuration
public class MongoCustomConverterConfig {
@Bean
public MongoCustomConversions mongoCustomConversions(){
List<Converter<?,?>> converters = new ArrayList<>();
converters.add(new ZoneDateTimeWriteConverter());
converters.add(new ZonedDateTimeReadConverter());
return new MongoCustomConversions(converters);
}
}
主要内容:JSF自定义转换器实例我们可以在JSF中创建自己的自定义转换器。 以下列表是我们可以在JSF中创建自定义转换器的步骤。 通过实现接口创建一个转换器类。 实现上述接口的和方法。 使用注解为自定义转换器分配唯一的ID。 JSF自定义转换器实例 打开 NetBeans IDE 创建一个Web工程:CustomConverter,其目录结构如下所示 - 创建以下文件代码,文件:index.xhtml 的代码内容如下所示 - 文
I'v开始寻找很好的解决方案,如何使用Spring CassandraOperations很好地持久化实体。问题的出现是因为我的实体中的某些字段不支持cassandra,例如joda DateTime。 解决方法是在java类型的同一实体中有其他字段。util。Date而不是joda DateTime,用@Transient标记未要求的字段。但这并不干净,所以我开始寻找自动自定义转换。 目前,sp
我正在开发一个Spring启动自定义启动器,其中pom包含一些依赖项(其他启动器、库),并且这个启动器执行一些关于jwt过滤的配置,以允许过滤器处于安全水位。问题是当我在另一个项目(starter-消费者)中添加我的自定义启动器作为pom依赖项时,它似乎检测到我要导入的类,但IntelliJ什么也没做。 也许我没有正确打包启动器,或者至少我在里面编码的类。启动器在pom中包含的其他依赖项被成功添加
在很多的 Linux 环境中,你可以通过修改文件 .desktop 来在它的启动器中添加自定义条目。 关于Canonical 的 Unity 启动器文档, 参考 Adding Shortcuts to a Launcher. 可以通过 freedesktop.org Specification网站,找到更详细的参考信息。 Audacious 的启动器快捷方式: 一般情况下,在快捷键menu中为每一
我是java.time包的新手。我有一个本地日期是2015-12-10。我需要将此转换为ZonedDateTime。时间应该是00:00:00,区域是zoneoffset.utc。 dateTimeException:无法从java.time.localDate类型的TemporalAccessor:2015-12-10获取Instant 我也试过: 这会产生意想不到的结果。 我查看了API并尝试
Excel中的datetime保存为1900-01-01之后的天数(1,因为它认为1900-02-29发生了)。数字中的分数是一天中的时间偏移量。 这个数字没有时区的概念。所以12.5是1900-01-12T12:00:00在您打开电子表格的时区。在科罗拉多州打开它,它显示中午。在德国打开它,它显示中午。这不是瞬间,而是LocalDateTime。 对于我们的系统,我们将所有内容存储为Offset