在谷歌應用程序引擎的Java,谷歌的App Engine(Java)的數據庫自動生成的ID
當我這樣做:
ProjectData pd = new ProjectData();
pd.id = null; // let Objectify auto-generate the project id
pd.dateCreated = date;
datastore.put(pd); // put the project in the db so that it gets assigned an id
數據庫會自動分配一個唯一的ID給每個PD,當運行「 datastore.put(PD)」。 不過,如果我添加父鍵字段:
ProjectData pd_new= new ProjectData();
pd_new.id = null; // let Objectify auto-generate the project id
pd_new.parentKey= new Key<OtherData>(OtherData.class, anotherId);
pd_new.dateCreated = date;
datastore.put(pd_new);
即使ID仍將是自動生成的,它不是唯一了。 ID總是一樣的。例如,我在數據庫7個ProjectData的,它們的ID都是「5629499534213120」
我的數據結構是
public class ProjectData {
@Id Long id;
@Parent Key<OtherData> parentKey;
long dataCreated;
}
難道我做錯了這裏,這個錯誤我好幾天。
BTW,我可以通過手動分配每個人
pd_new.id = System.currentTimeMillis();
的修復它,但我不認爲這是一個適當的方式做到這一點。
所以你的意思不是讓它自動生成,而是手動使用(父母,孩子)作爲關鍵,對不對?它仍然是一個很長的int ID?謝謝 – RobinBattle
不,你應該使用自動生成的ID。當您想要檢索子實體的密鑰時,您需要知道子實體的密鑰,或者如果您知道子實體的ID及其父代的ID,則始終可以創建此密鑰。 –