好的,现在看到这段代码
public void insertUser1(){
public static Key personKey=KeyFactory.createKey("Person", "PersonName");
Entity userEntity=new Entity("User", "User1", personKey);
userEntity.setProperty("FirstName","Tom");
datastore.put(userEntity);
}
运行insertUser1();
后,您可以在数据存储区中看到它
ID/Name - FirstName User1 - Tom
现在,我想修改user1的firstname,但这次我使用了这段代码
public void modifyUser1(){
Entity userEntity=new Entity("User", "User1");
userEntity.setProperty("FirstName","Mary");
datastore.put(userEntity);
}
现在,再次检查数据存储区,我可以看到2个条目:
ID/Name - FirstName User1 - Tom User1 - Mary
为什么Google会让数据存储区允许重复的ID /名称?管理此问题的最佳做法是什么?
答案 0 :(得分:3)
第一个有父母,第二个没有。
public static Key personKey=KeyFactory.createKey("Person", "PersonName");
Entity userEntity=new Entity("User", "User1", personKey);
标识为Key(Key(Person,PersonName), User, User1)
但是这个:
new Entity("User", "User1");
只是Key(User, User1)
。所以它是不同的ID。
基本上它的实体 Key 每个数据库都是唯一的,它由 Parent Id (或空)和 Entity Id 组成
详细了解实体父母:https://cloud.google.com/appengine/docs/java/datastore/#Java_Ancestor_paths