Я столкнулся с «не могу работать с несколькими группами объектов в одной транзакции». проблема при использовании APPENGINE FOR JAVA с JDO со следующим кодом:
PersistenceManager pm = PMF.get (). GetPersistenceManager ();
Запрос q = pm.newQuery («ВЫБРАТЬ это ИЗ» + TypeA.class.getName ()
+ "ГДЕ userId == userIdParam");
q.declareParameters ("String userIdParam");
List poos = (List) q.execute (userIdParam);
для (TypeA a: allTypeAs) {
a.setSomeField (SomeValue);
}
pm.close ();
}
Кажется, проблема в том, что я не могу работать с несколькими объектами одновременно, поскольку они не находятся в одной группе объектов во время транзакции. Несмотря на то, что это не похоже на то, что я нахожусь в транзакции, appengine генерирует ее, потому что у меня есть следующий набор в моем jdoconfig.xml:
<property name="datanucleus.appengine.autoCreateDatastoreTxns" value="true"/>
Fine. Пока я думаю, что понимаю.
НО - если я заменю TypeA в приведенном выше коде на TypeB - я не получаю ошибку. Я не верю, что между типом a и типом b есть что-то отличное - они оба имеют одинаковую структуру ключей. У них есть разные поля, но это не должно иметь значения, верно?
Мой вопрос - что может отличаться между TypeA и TypeB, что они дают такое разное поведение? И, следовательно, что вы, я в корне неправильно понимаю, что такое поведение может вообще существовать ...
Спасибо.