我需要有兩個相同類型的對象。默認情況下,appengine不允許它,但我發現這個參數:datanucleus.appengine.allowMultipleRelationsOfSameType,所以我可以保存兩個相同類型的對象。AppEngine - 同類型的多個關係
在調試模式下,在調用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不允許相同的類型關係?
你將需要包含一些源代碼來演示這個問題。如果你在談論JDO或其他框架,這裏就不清楚了。 – 2011-06-12 03:11:29
是的,我正在使用JDO。 – david 2011-06-14 01:44:01
我只是打電話給manager.makePersistent(myClass);而myClass有兩個不同的mySubClass,它們具有不同的屬性。但是,當我從manager.getObjectById(myClass.class,myClassKey)從數據存儲中獲取myClass;兩個子類中的屬性都是相等的。 Thx爲您提供幫助! – david 2011-06-14 01:51:27