Мне нужно иметь два объекта одного типа. По умолчанию 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;
Объект 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 не разрешает отношения одного типа?