DatastoreにLow Level APIでデータの更新をかける

Datastoreに対して更新をかける方法です。

datastoreのインスタンスは既に生成してある前提です。

トランザクションをセットしないと更新を受け付けてくれません。

Entity.newBuilder(model);

で既存のEntityをセットしてaddPropertyで更新かけるカラムに対して変更を適用します。

  private static void setFlag(Entity model) throws DatastoreException {

    BeginTransactionRequest.Builder treq = BeginTransactionRequest.newBuilder();
    BeginTransactionResponse tres = datastore.beginTransaction(treq.build());
    ByteString tx = tres.getTransaction();

    CommitRequest.Builder request = CommitRequest.newBuilder();
    request.setTransaction(tx);
    Entity.Builder entity = Entity.newBuilder(model);
    entity.addProperty(Property.newBuilder().setName("Hoge").setValue(
      Value.newBuilder().setBooleanValue(true)));

    request.getMutationBuilder().addUpdate(entity);

    CommitResponse response = datastore.commit(request.build());

    request.clearTransaction();
  }