Java AppEngine-相同类型的多个关系

Java AppEngine-相同类型的多个关系,java,google-app-engine,google-cloud-datastore,Java,Google App Engine,Google Cloud Datastore,我需要两个相同类型的对象。默认情况下,appengine不允许这样做,但我找到了这个参数:datanucleus.appengine.allowMultipleRelationsOfSameType,因此我可以保存两个相同类型的对象 在调试模式下,在调用makePersistent方法之前,我检查了每个对象中的一个值,它们是不同的,但是,当我尝试从数据存储恢复这些值时,它们是相同的。两者都有第二个对象的值 此代码用于保存对象FaseGAE: manager = GAEDAOFactory.get

我需要两个相同类型的对象。默认情况下,appengine不允许这样做,但我找到了这个参数:datanucleus.appengine.allowMultipleRelationsOfSameType,因此我可以保存两个相同类型的对象

在调试模式下,在调用makePersistent方法之前,我检查了每个对象中的一个值,它们是不同的,但是,当我尝试从数据存储恢复这些值时,它们是相同的。两者都有第二个对象的值

此代码用于保存对象FaseGAE:

manager = GAEDAOFactory.get().getPersistenceManager();
Key faseKey = KeyFactory.stringToKey(grupo.getFaseKey());
FaseGAE faseGAE = manager.getObjectById(FaseGAE.class, faseKey);
faseGAE.addGrupoGAE(grupoGAE);
faseGAE = manager.makePersistent(faseGAE);
manager.close();
此代码用于获取对象:

manager = GAEDAOFactory.get().getPersistenceManager();
FaseGAE faseGAE2 = manager.getObjectById(FaseGAE.class, faseKey);
FaseGAE对象:

@PersistenceCapable
public class FaseGAE {

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

    @Persistent private List<GrupoGAE> grupos;
@PersistenceCapable
public class GrupoGAE {

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

    @Persistent private List<MyClass1> list;
MyClass2对象:

@PersistenceCapable
public class MyClass2{

    @PrimaryKey
    @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
    private Key key;
testValue1和testValue2保留不同的值,但SametyPeoObject1和SametyPeoObject2的值为SametyPeoObject2。我检查了数据存储,两个对象都是用不同的值创建的。似乎两者都指向同一个参照物

我做错什么了吗?
使用相同类型的关系时缺少什么?

显然AppEngine不允许相同类型的关系?

我以前遇到过类似的问题,我不太确定您的确切问题是什么,以及是否相同。但希望这个答案至少能为您指明正确的方向

然而,在将java与GAE结合使用时,您可以采用一些“最佳实践”

1) 为类实现可序列化 i、 e.公共类FaseGAE实现可序列化 -这将允许使用会话对象存储和检索具有持久性功能的类

2) 您可以尝试对GAE数据存储使用objectify

您需要包含一些源代码来演示这个问题。这里甚至不清楚您是在谈论JDO还是其他框架。我只是调用manager.makePersistent(myClass);myClass有两个不同的mySubClass,它们具有不同的属性。但是当我从数据存储中使用manager.getObjectById获取myClass时(myClass.class,myClassKey);两个子类中的属性相等。谢谢您的帮助!这是两个类(myClass和mySubClass)的密钥声明:@PrimaryKey@Persistent(valueStrategy=IdGeneratorStrategy.IDENTITY)私钥;@david不要告诉我们,让我们看看。在原始问题中包含您的实际源代码,而不是让人们猜测可能是错的。嗨@Nick,我添加了一些代码,还有什么有用的吗?
@PersistenceCapable
public class MyClass2{

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