java – AppEngine – 相同类型的多重关系

我需要有两个相同类型的对象.默认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;

GrupoGAE对象:

@PersistenceCapable
public class GrupoGAE {

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

    @Persistent private List<MyClass1> list;

MyClass1对象:

@PersistenceCapable
public class MyClass1 {

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

    @Persistent private MyClass2 sameTypeObject1;
    @Persistent private MyClass2 sameTypeObject2;
    @Persistent private String testValue1;
    @Persistent private String testValue2;

MyClass2对象:

@PersistenceCapable
public class MyClass2{

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

testValue1和testValue2保持不同的值,但sameTypeObject1和sameTypeObject2的值为sameTypeObject2.我检查了数据存储区,并且使用不同的值创建了两个对象.看起来两者都指向相同的参考.

我做错了吗?
与同类型关系一起工作的东西?
AppEngine绝对不允许相同的类型关系?

解决方法

我以前遇到过类似的问题,“我不太确定你的确切问题是什么,是否一样,但希望这个答案至少会指向你的方向

然而,在使用java与GAE时,可以采用几种“最佳做法”.

1)实现Serializable for classes
即公共类FaseGAE实现Serializable
– 这将使会话对象能够存储和检索持久能力的类.

2)您可以尝试使用objectify进行GAE数据存储
http://code.google.com/p/objectify-appengine/

相关文章

ArrayList简介:ArrayList 的底层是数组队列,相当于动态数组。与 Java 中的数组相比,它的容量能动态增...
一、进程与线程 进程:是代码在数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位。 线程...
本文为博客园作者所写:&#160;一寸HUI,个人博客地址:https://www.cnblogs.com/zsql/ 简单的一个类...
#############java面向对象详解#############1、面向对象基本概念2、类与对象3、类和对象的定义格式4、...
一、什么是异常? 异常就是有异于常态,和正常情况不一样,有错误出错。在java中,阻止当前方法或作用域...
Collection接口 Collection接口 Collection接口 Collection是最基本的集合接口,一个Collection代表一组...