App Engine JDO延迟按存储密钥加载对象

时间:2012-09-28 05:05:31

标签: google-app-engine jdo

所以当我加载偶数对象时,我没有运气加载场地和艺术家对象。基本上,当我创建一个事件时,我会加载特定的艺术家和特定的场地,并将关键字保存在事件的artistKey和venueKey字段中。但是,当我加载时,它总是为空。我已尝试注释“@ Persistent(defaultFetchGroup =”true“)”以及“@Persistent(mappedBy =”venue“)@Element(dependent =”true“)”对我的场地和艺术家没有运气作为艺术家/场地仍然当我加载一个事件(密钥在那里)时,它变为null。当我尝试使用defaultFetchGroup时,它说我无法加载父项(如果它已经被持久化),这是有意义的我猜。

    public class Event {

@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Key id; 

@Persistent
private Key artistKey;

@Persistent
private Key venueKey;

private Artist artist;

private Venue venue;

//other fields

//getters and setters

}


@PersistenceCapable(identityType = IdentityType.APPLICATION)
public class Venue { 

@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Key id;

//other fields

//getters and setters

}

@PersistenceCapable(identityType = IdentityType.APPLICATION)
public class Artist { 

@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Key id;

//other fields

//getters and setters
}

1 个答案:

答案 0 :(得分:1)

有关系(在GAE中)你必须注意它们是否拥有(与数据存储区中的拥有对象一起存储)或无主(就像它们在所有其他数据存储区中一样)。如果是后者,您可以将关系标记为@Unowned。 GAE对影响这一点的实体组有一些限制 - 请参阅他们的文档