Вот мой пример:
Добавить новую запись в хранилище данных // позиция 1
Добавить новую запись в хранилище данных // позиция 2
Добавить новую запись в хранилище данных // позиция 3
Теперь я хочу получить запись, которая была добавлена в позиции 2. Как это можно сделать с помощью Google App Engine и JDO?
Похоже, что один из способов - присвоить PrimaryKey Long ID и затем использовать getObjectById. Поэтому длинный идентификатор будет равен сохранению позиции автоматически хранилищем данных.
Код, который показывает это:
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);
Могу ли я быть уверен, что поле Long ID всегда будет увеличиваться на 1 для новой записи и будет равно 1 для первой?
Или есть другой лучший способ? :)