gpt4 book ai didi

google-app-engine - 应用程序 x1 无法访问应用程序 x2 数据

转载 作者:太空宇宙 更新时间:2023-11-03 15:30:26 25 4
gpt4 key购买 nike

我使用远程 API 和低级数据存储 API 将一些命名空间数据从 x1 复制到 x2。

我正在访问 x2 应用程序,以获取某些数据的以下错误

java.lang.IllegalArgumentException: app x1 cannot access app x2's data    at com.google.appengine.api.datastore.DatastoreApiHelper.translateError(DatastoreApiHelper.java:36)    at com.google.appengine.api.datastore.DatastoreApiHelper$1.convertException(DatastoreApiHelper.java:76)    at com.google.appengine.api.utils.FutureWrapper.get(FutureWrapper.java:106)    at com.google.appengine.api.datastore.FutureHelper$CumulativeAggregateFuture.get(FutureHelper.java:145)

最佳答案

如这篇文章所述:Migration to HRD - How to convert string-encoded keys to new application所有实体 key 都包含对应用程序 ID 的引用。如果您使用编码为字符串的键,则在将数据复制到新应用程序时不会更新该引用。但是你可以自己做。

只需在新环境中运行一个查询来更新每个键以指向新的应用程序 ID。在这个例子中,我假设每个实体都实现了这个接口(interface):

Interface Entity{
public Key getKey();
public void setKey(Key key);
}

现在我可以使用这样的方法:

//... 

List<Entity> entities = //... your query

for (Entity entity : entities){
entity.setKey(generateNewKey(entity.getKey());
}

//...

//Method written by Nikolay Ivanov in the other post, that recursive generate a new key respecting to parents

private Key generateNewKey(Key key) {
Key parentKey = key.getParent();
if(parentKey == null){
return KeyFactory.createKey(key.getKind(), key.getId());
}else{
Key newParentKey = generateKey(parentKey);
return KeyFactory.createKey(newParentKey, key.getKind(), key.getId());
}
}

关于google-app-engine - 应用程序 x1 无法访问应用程序 x2 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9651943/

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