数据存储v1Beta2到v1 API不兼容

时间:2016-11-02 19:44:09

标签: api migration google-cloud-datastore

我在迁移我们的Java代码(为v1Beta2数据存储API编写)以符合v1 API时遇到了重大问题。以下是不匹配:

  1. 值类:hasDoubleValue(),hasStringValue()和其他函数可以让您确定存储的值的类型?确定价值类型的新方法是什么?

  2. 与LookupRequest,Query,RunQueryRequest,...相关的所有getBuilder()方法发生了什么?我们现在只是为这些类调用构造函数吗? Builder类和getBuilder()方法似乎不必要地复杂化。

1 个答案:

答案 0 :(得分:1)

要确定值类型,可以使用switch语句:

switch (value.getValueTypeCase()) {
  case DOUBLE_VALUE:
    value.getDoubleValue()...
    break;
  case STRING_VALUE:
    value.getStringValue()...
    break;
  ...
}

要获取LookupRequest.Builder对象,您可以调用LookupRequest.newBuilder()(其他消息类型也相同)。

顺便说一句,如果您要重写代码以停止使用Cloud Datastore v1beta2,您可能需要查看google-cloud-java,它为协议缓冲区API提供了更加惯用的包装。