Java JDO,GAE:按子对象加载对象组';s键
我拥有两个对象之间的一对多关系:Java JDO,GAE:按子对象加载对象组';s键,java,google-app-engine,persistence,jdo,Java,Google App Engine,Persistence,Jdo,我拥有两个对象之间的一对多关系: @PersistenceCapable(identityType = IdentityType.APPLICATION) public class AccessInfo { @PrimaryKey @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) private com.google.appengine.api.datastore.Key keyInternal;
@PersistenceCapable(identityType = IdentityType.APPLICATION)
public class AccessInfo {
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private com.google.appengine.api.datastore.Key keyInternal;
...
@Persistent
private PollInfo currentState;
public AccessInfo(){}
public AccessInfo(String key, String voter, PollInfo currentState) {
this.voter = voter;
this.currentState = currentState;
setKey(key); // this key is unique in whole systme
}
public void setKey(String key) {
this.keyInternal = KeyFactory.createKey(
AccessInfo.class.getSimpleName(),
key);
}
public String getKey() {
return this.keyInternal.getName();
}
及
@PersistenceCapable(identityType=identityType.APPLICATION)
公共类PollInfo
{
@主键
@持久性(valueStrategy=IdGeneratorStrategy.IDENTITY)
私钥;
@持久(mappedBy=“currentState”)
私有列表访问;
...
我创建了一个类PollInfo的实例,并使其持久化。
但是,我想通过AccessInfo键加载这个组,得到异常NucleusObjectNotFoundException。
是否可以按子项的键加载组?如果您引用用于检索AccessInfo对象的代码以及如何获取所使用的“键”的话?“键”(用于AccessInfo)是一个包含12个字符的随机字母数字字符串。PersistenceManager pm=PMF.get().getPersistenceManager();Transaction tx=pm.currentTransaction();try{tx.begin();AccessInfo ai;try{ai=pm.getObjectById(AccessInfo.class,KeyFactory.createKey(AccessInfo.class.getSimpleName(),key));“key”(用于AccessInfo)是一个包含12个字符的随机字母数字字符串。PersistenceManager pm=PMF.get().getPersistenceManager();Transaction tx=pm.currentTransaction();try{tx.begin();AccessInfo ai;try{ai=pm.getObjectById(AccessInfo.class,KeyFactory.createKey(AccessInfo.class.getSimpleName(),key));为什么不在持久化AccessInfo对象时打印出“pm.getObjectId(ai)”,并在pm.getObjectById(id)中使用它打电话?这样你就可以确定钥匙是对的
@PersistenceCapable(identityType = IdentityType.APPLICATION)
public class PollInfo
{
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Key key;
@Persistent(mappedBy = "currentState")
private List<AccessInfo> accesses;
...