Java 链接与使用GAE和JDO创建新对象

Java 链接与使用GAE和JDO创建新对象,java,google-app-engine,jdo,Java,Google App Engine,Jdo,我正在使用GoogleAppEngine和JDO数据存储构建一个web服务。 每件事都很顺利,我对各部分如何组合有相当好的理解 我遇到的问题如下: 当我插入一个新的产品类,它有一个与store无关的对象时,它将创建一个新的store对象,即使该store已经存在 我希望发生的是,如果json与已经存在的存储数据一起提交,它只会将新产品链接到已经存在的存储,而不是使用新id创建重复的存储 我尝试将@Uniquename=STORE\u COMPOSITE\u IDX,members={key,na

我正在使用GoogleAppEngine和JDO数据存储构建一个web服务。 每件事都很顺利,我对各部分如何组合有相当好的理解

我遇到的问题如下: 当我插入一个新的产品类,它有一个与store无关的对象时,它将创建一个新的store对象,即使该store已经存在

我希望发生的是,如果json与已经存在的存储数据一起提交,它只会将新产品链接到已经存在的存储,而不是使用新id创建重复的存储

我尝试将@Uniquename=STORE\u COMPOSITE\u IDX,members={key,name}添加到STORE类,认为如果名称已经存在,它将链接到该存储,但这不起作用


如何使其工作?

如果创建一个新对象,它没有标识,因此处于瞬态。如果将其传递给持久化机制,它将以新的形式持久化它,既可以作为makePersistent的参数,也可以作为传递给makePersistent的对象的字段

如果要链接到现有对象,应检索要将其关联到的现有对象pm.getObjectById,并将新对象的字段设置为该对象。在这种情况下,检索到的对象将处于持久或空状态。当您持久化其他对象时,它将找到现有对象,因此只需在数据库中链接到它

了解对象生命周期状态。JDO规范中的所有内容或任何像样的JDO文档和GAE文档都不是像样的JDO文档