【发布时间】:2023-03-31 22:55:02
【问题描述】:
我拥有两个对象之间的一对多关系:
@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)
public class PollInfo
{
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Key key;
@Persistent(mappedBy = "currentState")
private List<AccessInfo> accesses;
...
我创建了一个 PollInfo 类的实例并使其持久化。没关系。 但是后来我想通过 AccessInfo 键加载这个组,我得到了 NucleusObjectNotFoundException 异常。 是否可以通过子键加载组?
【问题讨论】:
-
“Key”(用于 AccessInfo)是 12 个字符的随机字母数字字符串。 PersistenceManager pm = PMF.get().getPersistenceManager();交易 tx = pm.currentTransaction();尝试 { tx.begin();访问信息 ai;尝试 { ai = pm.getObjectById(AccessInfo.class, KeyFactory.createKey( AccessInfo.class.getSimpleName(), key));
标签: java google-app-engine persistence jdo