亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何從 com.google.datastore.v1.Entity 獲取數據存儲實體 ID

如何從 com.google.datastore.v1.Entity 獲取數據存儲實體 ID

慕斯709654 2022-11-10 10:17:20
我在我的 Google Cloud Dataflow 程序中編寫了一個從 Google Datastore 獲取數據的代碼。我能夠獲取實體的所有字段,除了自動生成的字段 Id 字段。我曾嘗試使用 entity.getKey() 但我得到了空值。下面是我的代碼片段,Datastore datastore = DataflowDatastoreService.getDatastoreObject(null, null, null);Query.Builder queryBuilder = Query.newBuilder();Filter filter1 = Filter.newBuilder().setPropertyFilter(PropertyFilter.newBuilder()  .setProperty(PropertyReference.newBuilder().setName("cId")).setOp(PropertyFilter.Operator.EQUAL).setValue(Value.newBuilder().setIntegerValue(1059438885900008L).build()).build()).build();Filter filter2 = Filter.newBuilder().setPropertyFilter(PropertyFilter.newBuilder().setProperty(PropertyReference.newBuilder().setName("active")).setOp(PropertyFilter.Operator.EQUAL).setValue(Value.newBuilder().setBooleanValue(Boolean.TRUE).build()).build()).build();Filter composeFilter = Filter.newBuilder().setCompositeFilter(CompositeFilter.newBuilder()                    .addFilters(filter1).setOp(Operator.AND).addFilters(filter2).build()).build();            queryBuilder.addKind(KindExpression.newBuilder().setName("MyMaster").build());            queryBuilder.setFilter(composeFilter).build();RunQueryRequest request = DataflowDatastoreService.makeRequest(queryBuilder.build(), null);RunQueryResponse response = datastore.runQuery(request);QueryResultBatch batch = response.getBatch();List<EntityResult> entityResutls =  batch.getEntityResultsList();List<Entity> myEntities = new ArrayList<>();Map<String, Value> entityMap = myEntities(0).getPropertiesMap();在我的代碼中,我能夠獲取 entityMap 鍵中的所有字段,但我沒有獲取鍵,是否有任何其他方式可以通過 Id 獲取所有字段。
查看完整描述

2 回答

?
喵喔喔

TA貢獻1735條經驗 獲得超5個贊

注:本人不是java用戶,根據python經驗回答

實際上,在常規查詢結果中返回的實體不包含實體鍵/ID。嘗試從實體中獲取它的效率相當低 - 您需要訪問每個單獨實體的數據存儲區(甚至不考慮為什么這似乎對您不起作用)。

如果我需要實體鍵/ID,我會改為使用僅鍵查詢- 獲取鍵,我可以輕松地從中獲?。?/p>

  • 本地的密鑰 ID,無需進行實際的數據存儲調用(在 python viakey.id()中,我不知道 java 等效項)

  • 通過直接鍵查找的實體,可以批處理以提高效率。


查看完整回答
反對 回復 2022-11-10
?
有只小跳蛙

TA貢獻1824條經驗 獲得超8個贊

entity.getKey().getPathList().get(0).getId()

這有助于我實現結果。通過 getKey 方法獲取實體 ID。


查看完整回答
反對 回復 2022-11-10
  • 2 回答
  • 0 關注
  • 113 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號