【问题标题】:JDO, GAE: Load object group by child's keyJDO,GAE:按子键加载对象组
【发布时间】: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


【解决方案1】:

也许你引用你的代码来检索 AccessInfo 对象以及你是如何获得你使用的“密钥”的?

【讨论】:

  • “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));
  • 当您持久化 AccessInfo 对象时,为什么不直接打印出“pm.getObjectId(ai)”是什么?并在 pm.getObjectById(id) 调用中使用它?这样您就可以确定拥有正确的密钥
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-05
相关资源
最近更新 更多