Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JDO,GAE:按子对象加载对象组';s键_Java_Google App Engine_Persistence_Jdo - Fatal编程技术网

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;
    ...