Java 在谷歌应用程序引擎中拥有的关系不工作

Java 在谷歌应用程序引擎中拥有的关系不工作,java,google-app-engine,persistence,jdo,Java,Google App Engine,Persistence,Jdo,我正在从事一个Google应用程序引擎项目,我正在努力使JDO中的关系正常工作。对象被正确保存,但是相关对象不会显示在数据存储查看器或查询中 我的代码的一个示例是: @PersistenceCapable public class Project implements Persistable { @PrimaryKey @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)

我正在从事一个Google应用程序引擎项目,我正在努力使JDO中的关系正常工作。对象被正确保存,但是相关对象不会显示在数据存储查看器或查询中

我的代码的一个示例是:


        @PersistenceCapable
        public class Project implements Persistable {


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

    @Persistent(defaultFetchGroup = "true")
    private Client client;

        // Extra fields and getter and setters remove

        }
项目对象已保存,但没有与之关联的客户端-有人知道原因吗?这是我在AppEngine上的第一个应用,也使用了JDO,所以这可能是非常明显的事情


提前谢谢

您应该知道,App Engine上的自有关系与JDO规范非常不同。自有关系实际上创建了一个实体组,它是一个存储图。更多信息请点击这里


所以在大多数情况下,在AppEngine上,最好按键引用其他对象。除非你真的想定义一个实体组图。同样,我建议您避免使用大型继承树(信息在上面相同的参考链接中)。

您应该知道,App Engine上的自有关系与JDO规范非常不同。自有关系实际上创建了一个实体组,它是一个存储图。更多信息请点击这里

所以在大多数情况下,在AppEngine上,最好按键引用其他对象。除非你真的想定义一个实体组图。同样,我建议您避免使用大型继承树(信息见上面的同一参考链接)


        @PersistenceCapable
        public class Client implements Persistable {

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

Representation r = null;
        PersistenceManager pm = PMF.get().getPersistenceManager();

        try {
            XMLToObject p = new XMLToObject(new org.everglade.tempus.persistence.dataobjects.Project());
            p.parse(xml);
            org.everglade.tempus.persistence.dataobjects.Project proj = (org.everglade.tempus.persistence.dataobjects.Project) p.getObject();
            pm.makePersistent(proj);
            getResponse().setStatus(Status.SUCCESS_CREATED);
            getResponse().setLocationRef("/project/" + KeyFactory.keyToString(proj.getId()));
        } catch (Exception e) { // Add finer exception handling here so can alter status based on what went wrong!
            getResponse().setStatus(Status.SERVER_ERROR_INTERNAL);
            Log.severe("The following error occurred whilst trying to add a new project: " + e.getMessage());
        } finally {
            pm.close();
        }