当前位置: 首页 > 知识库问答 >
问题:

Spring data cassandra中的自定义编解码器读取问题

百里君博
2023-03-14

我在Cassandra表中有一个时间戳字段,我想将它映射到Java即时类型。在写作时很容易做到这一点。

我添加了自定义编解码器。

@Override
protected ClusterBuilderConfigurer getClusterBuilderConfigurer() {
    return clusterBuilder -> {

        clusterBuilder.getConfiguration().getCodecRegistry()
                      .register(InstantCodec.instance,
                                LocalDateCodec.instance,
                                LocalTimeCodec.instance);
        return clusterBuilder;
    };
}
private enum InstantWriteConverter implements Converter<Instant, Instant> {
    INSTANT;

    @Override
    public Instant convert(Instant source) {
        return source;
    }
}

编辑

尝试注册读写转换器,但读转换器未被使用。

    @WritingConverter
private enum InstantWriteConverter implements Converter<Instant, Long> {
    INSTANT;

    @Override
    public Long convert(Instant source) {
        return source.toEpochMilli();
    }
}

@ReadingConverter
private enum InstantReadConverter implements Converter<Long, Instant> {
    INSTANT;

    @Override
    public Instant convert(Long source) {
        return Instant.ofEpochMilli(source);
    }
}

共有1个答案

沈曜灿
2023-03-14

弄好了。读转换器需要在row->类级别上。

    @Override
    protected ClusterBuilderConfigurer getClusterBuilderConfigurer() {
        return clusterBuilder -> {

            clusterBuilder.getConfiguration().getCodecRegistry()
                          .register(InstantCodec.instance,
                                    LocalDateCodec.instance,
                                    LocalTimeCodec.instance);
            return clusterBuilder;
        };
    }

    @Override
    public CustomConversions customConversions() {
        return new CustomConversions(
                Arrays.asList(ReadConverter.INSTANCE,
                              InstantWriteConverter.INSTANCE,
                              LocalTimeWriteConverter.INSTANCE,
                              DurationWriteConverter.INSTANCE,
                              LocalDateWriteConverter.INSTANCE));
    }

@ReadingConverter
private enum ReadConverter implements Converter<Row, FlightFareInfo> {
    INSTANCE;

    @Override
    public FlightFareInfo convert(Row source) {

        return FlightFareInfo.convertFromRow(source);
    }
}
 类似资料:
  • 本章介绍: Decoder Encoder 单元测试 本章讲述 Netty 中如何轻松实现定制的编解码器,由于 Netty 架构的灵活性,这些编解码器易于重用和测试。为了更容易实现,使用 Memcached 作为协议例子是因为它更方便我们实现。 Memcached 是来自 Memcached.org 的免费开源、高性能、分布式的内存对象缓存系统,其目的是加速动态 Web 应用程序的响应,减轻数据库

  • 下面是读取多个项目的自定义平面文件项目读取器的代码 } 下面是自定义项目编写器的代码 } 我是Spring批处理的新手。这段代码正确吗?我可能缺少任何用例?目前我的批处理作业按顺序执行,但将来可能会使用多线程和分区。 需要这样做是因为我需要在处理器中进行数据库查找。为多个项目进行查找比为单个项目进行查找要好。

  • 问题内容: 我有一些要发送到我的应用程序中的芹菜任务的对象。这些对象显然无法使用默认json库进行json序列化。有没有一种方法可以使celery使用自定义JSON / 对这些对象进行序列化/反序列化? 问题答案: 这里有些晚,但是您应该能够通过在kombu序列化程序注册表中注册自定义编码器和解码器,如docs中所示: http [//docs.celeryproject.org/en/lates

  • 本文向大家介绍详解C#读取Appconfig中自定义的节点,包括了详解C#读取Appconfig中自定义的节点的使用技巧和注意事项,需要的朋友参考一下 今天在使用Nlog的时候,发现了一个之前没注意的问题。   以前,我的app配置文件都是这么写的,当然配置比较多的时候会改用xml。  如果<appSettings>节点中的内容很多的话,我自己有时候都分不清哪个是做什么的,可能朋友们会说,你加个注

  • 本文向大家介绍Python3 解决读取中文文件txt编码的问题,包括了Python3 解决读取中文文件txt编码的问题的使用技巧和注意事项,需要的朋友参考一下 问题描述 尝试用Python写一个Wordcloud的时候,出现了编码问题。 照着网上某些博客的说法添添改改后,结果是变成了“UnicodeDecodeError: ‘utf-8' codec can't decode byte…”这个错误

  • 基本要求: 熟悉 C++ 编程。 确保下载 TensorFlow 源文件, 并可编译使用。 我们将支持文件格式的任务分成两部分: 文件格式: 我们使用 Reader Op来从文件中读取一个 record (可以使任意字符串)。 记录格式: 我们使用解码器或者解析运算将一个字符串记录转换为TensorFlow可以使用的张量。 例如, 读取一个 CSV 文件,我们使用 一个文本读写器, 然后是从一行文