Google app engine 应用程序引擎JDO通过存储密钥延迟加载对象

Google app engine 应用程序引擎JDO通过存储密钥延迟加载对象,google-app-engine,jdo,Google App Engine,Jdo,因此,当我加载偶数对象时,我在加载场地和艺术家对象方面没有任何运气。基本上,当我创建活动时,我加载特定的艺术家和特定的地点,并将密钥保存在活动的artistKey和venueKey字段中。然而,当我加载时,它总是空的。我在我的场地上尝试了注释“@Persistent(defaultFetchGroup=“true”)”和“@Persistent(mappedBy=“venue”)@Element(dependent=“true”)”,但作为艺术家/场地没有运气,当我加载一个事件时仍然显示为空(键

因此,当我加载偶数对象时,我在加载场地和艺术家对象方面没有任何运气。基本上,当我创建活动时,我加载特定的艺术家和特定的地点,并将密钥保存在活动的artistKey和venueKey字段中。然而,当我加载时,它总是空的。我在我的场地上尝试了注释“@Persistent(defaultFetchGroup=“true”)”和“@Persistent(mappedBy=“venue”)@Element(dependent=“true”)”,但作为艺术家/场地没有运气,当我加载一个事件时仍然显示为空(键在那里)。当我尝试defaultFetchGroup时,它说如果父对象已经被持久化,我就无法加载它,我想这是有道理的

公共类事件{
@主键
@持久性(valueStrategy=IdGeneratorStrategy.IDENTITY)
私钥id;
@持久的
私钥artistKey;
@持久的
私钥;
私人艺术家;
私人场地;;
//其他领域
//接球手和接球手
}
@PersistenceCapable(identityType=identityType.APPLICATION)
公开课场地{
@主键
@持久性(valueStrategy=IdGeneratorStrategy.IDENTITY)
私钥id;
//其他领域
//接球手和接球手
}
@PersistenceCapable(identityType=identityType.APPLICATION)
公共级艺术家{
@主键
@持久性(valueStrategy=IdGeneratorStrategy.IDENTITY)
私钥id;
//其他领域
//接球手和接球手
}

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

为什么不说明为什么要存储密钥而不仅仅是相关对象(如普通对象模型)?显然,不注释“艺术家”和“地点”不会使它们不持久。嗯,我想我已经试过了,它不会让我持久化一个对象。。。所以我可以把一个对象基本上保持为一列?今晚我将尝试一下。对于关系(在GAE中),您必须注意它们是拥有的(与拥有的对象一起存储在数据存储中)还是未拥有的(就像它们在所有其他数据存储中一样)。如果是后者,则可以将关系标记为@Unowned。GAE对影响此的实体组有一些限制-请参阅他们的文档!那句话。必须升级到新的datanucleus才能使@Unowned properties正常工作。我很感激!