gpt4 book ai didi

java - 如何按添加位置从数据存储中获取条目? (Google 应用引擎和 JDO)

转载 作者:行者123 更新时间:2023-12-02 08:15:32 26 4
gpt4 key购买 nike

这是我的例子:
将新条目添加到数据存储//位置 1
将新条目添加到数据存储//位置 2
将新条目添加到数据存储//位置 3

现在我想要获取在位置 2 添加的条目。如何使用 Google 应用引擎和 JDO 来完成此操作?

在我看来,一种方法是将 PrimaryKey 作为 Long ID,然后使用 getObjectById。所以长ID将等于数据存储自动存储位置。
显示它的代码:

import javax.jdo.annotations.*;
import javax.jdo.PersistenceManager;
import mypackage.PMF

public class Entry {
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Long ID;

//.. other fields
}


// create entries (suppose datastore is empty and i don't need deletes in future)
PersistenceManager pm = PMF.get().getPersistenceManager()
for(int i=0; i<10; i++){
pm.makePersistent(new Entry());
}
// created entries have their IDs exaclty = 1,2,3,4,5,6,7,8,9,10 ?

// fetch entry, that was added second
Key entryKey = KeyFactory.createKey(Entry.class.getSimpleName(), 2L);
Entry secondEntry = pm.getObjectById(Entry.class, entryKey);

我能否确定长 ID 字段对于新条目始终会增加 1,并且对于第一个条目等于 1?或者还有其他更好的方法? :)

最佳答案

这种“位置”概念不是 App Engine 概念。 App Engine 不保证系统生成的 ID 将按顺序无间隙地分配。

参见http://code.google.com/appengine/docs/java/datastore/entities.html#Kinds_IDs_and_Names

如果您小心的话,您可以自己接管 ID 分配,但是,根据您的应用及其使用模式,创建您自己的 ID 会引入瓶颈,从而限制您快速创建新实体的能力。

关于java - 如何按添加位置从数据存储中获取条目? (Google 应用引擎和 JDO),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6525213/

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