Cassandra 中MappingCodec的用法示例

93 篇文章 9 订阅
对应错误:
com.datastax.driver.core.exceptions.CodecNotFoundException: Codec not found for requested operation: [bigint <-> java.util.Date]



// 主要用于将Cassandra中不支持的类型使用自定义的方法转换
// 此类错误均可使用类似方法解决

import com.datastax.driver.core.*;

import java.util.Date;

public class CodecTest {

    static class DateToBigintCodec extends MappingCodec<Date, Long> {

        DateToBigintCodec() {
            // creates a mapping from bigint <-> Date.
            super(TypeCodec.bigint(), Date.class);
        }

        @Override
        protected Date deserialize(Long value) {
            return new Date(value);
        }

        @Override
        protected Long serialize(Date value) {
            return value.getTime();
        }
    }

    public static void main(String args[]) {
        TypeCodec<Date> codec = new DateToBigintCodec();
        Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
        try {
            // register custom codec
            cluster.getConfiguration().getCodecRegistry().register(codec);

            Date date = new Date();
            Session session = cluster.connect();
            // insert Date value into column v, which is a bigint.
            // schema:
            // CREATE TABLE simple.tbl (k int PRIMARY KEY, v bigint)
            PreparedStatement prepared = session.prepare("insert into simple.tbl (k, v) values (?, ?)");
            BoundStatement bound = prepared.bind();
            bound.setInt("k", 0);
            bound.setTimestamp("v", date);
            session.execute(bound);

            // Retrieve column v as a Date.
            Row row = session.execute("select v from simple.tbl").one();
            System.out.println(row.getTimestamp("v"));
        } finally {
            cluster.close();
        }
    }
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值