gpt4 book ai didi

cassandra - 升级对 3 中消失的 Datastax Java API 的调用

转载 作者:行者123 更新时间:2023-12-04 20:36:40 38 4
gpt4 key购买 nike

Datastax 3.x 驱动程序中现在有许多 API 已消失。它们被用来做我拥有的“框架”级驱动程序包装类。

https://github.com/datastax/java-driver/tree/3.0/upgrade_guide

升级指南没有提供如何替换对已删除 API 的调用的示例(无论如何我都很关心)。这里有几个缺失,我正在尝试升级我的代码。有什么想法“取代”了它们?

DataType.serialize(Object value, ProtocolVersion protocolVersion) 
DataType.deserialize(ByteBuffer bytes, ProtocolVersion protocolVersion)
DataType.asJavaClass()
DataType.Name.asJavaClass()

对 API 调用这些方法的任何帮助现在应该被调用,我们将不胜感激。

最佳答案

第 2 项通过自定义编解码器引用对数据类型的更改。一个 TypeCodec不再附加到 DataType因为在驱动程序的 3.0 版本中,您可以为数据类型定义自己的编解码器。因此,这些方法不再直接通过 DataType 提供。 .

Custom codecs (JAVA-721) introduce several breaking changes and also modify a few runtime behaviors.

Here is a detailed list of breaking API changes:

...

DataType has no more references to TypeCodec, so most methods that dealt with serialization and deserialization of data types have been removed:

  • ByteBuffer serialize(Object value, ProtocolVersion protocolVersion)

  • Object deserialize(ByteBuffer bytes, ProtocolVersion protocolVersion)

  • Class asJavaClass()



Custom Codecs如果您有 DataType,应该提供完成所需的一切所需的详细信息。通过解析 TypeCodec为此使用 CodecRegistry.codecFor TypeCodec用于解析默认编解码器的静态方法。 TypeCodec提供您需要的方法,即:
TypeCodec<Long> bigIntCodec = TypeCodec.bigint();
bigIntCodec.serialize(10L, protocolVersion);
bigIntCodec.deserialize(bytes, protocolVersion);
Class<?> clazz = bigIntCodec.getJavaType().getRawType();

关于cassandra - 升级对 3 中消失的 Datastax Java API 的调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34160748/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com