当我将对象持久保存到数据存储区时,何时(以及如何)可以获取我刚刚持有的特定对象的键?例如,如果我有:
@PersistenceCapable
public class Employee {
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Key id;
...
}
Query类:
public class EmployeeQuery {
// Persist a single Employee
public void persistEmployee(Employee e) {
// 1. Can I get the id at this point?
PersistenceManager pm = PMF.get().getPersistenceManager();
try {
pm.makePersistent(e);
// 2. Can I get the id at this point?
}
finally {
pm.close();
// 3. Can I get the id at this point?
}
}
...
}
可以在此处找到PersistenceManager和PMF信息:http://code.google.com/appengine/docs/java/datastore/jdo/overview.html#Getting_a_PersistenceManager_Instance
如上所述,在上述区域(1,2或3)中,我可以获得该特定对象的自动生成的ID吗?另外,我如何获取该特定对象的id?有关如何有效地做到这一点的任何建议?
感谢。
答案 0 :(得分:3)
一旦对象被持久化,您就可以在 Point 2 中获取密钥。 第1点过早,并且在发生异常时也会调用第3点,因此您无法保证拥有生成的密钥。
正如official docs所说:“保存实例时会填充实例的长键字段。”