Сегодня я впервые использую GWT и JDO. Я запускаю его с Eclipse в режиме локальной отладки.
Я делаю следующее:
public Collection<MyObject> add(MyObject o) {
PersistenceManager pm = PMF.get().getPersistenceManager();
try {
pm.makePersistent(o);
Query query = pm.newQuery(MyObject.class);// fetch all objects incl. o. But o only sometimes comes...
List<MyObject> rs = (List<MyObject>) query.execute();
ArrayList<MyObject> list= new ArrayList<MyObject>();
for (MyObject r : rs) {
list.add(r);
}
return list;
} finally {
pm.close();
}
}
Я уже установил <property name="datanucleus.appengine.datastoreReadConsistency" value="STRONG" />
в свой jdoconfig.xml
. Должен ли я установить некоторые другие параметры транзакции в конфигурации? Был ли у кого-нибудь рабочий jdoconfig.xml
? Или проблема где-то в другом? Какое-то кеширование между ними?
EDIT: Что я пробовал:
- Установка для NontransactionalRead/Write значения false
- Использование одного и того же/другого
PersistenceManager
при многократном вызовеPMF.get().getPersistenceManager()
- Использование транзакций
- ignoreCache = true на
PersistenceManager
- звоню
flush
иcheckConsistency
jdoconfig:
<persistence-manager-factory name="transactions-optional">
<property name="datanucleus.appengine.datastoreReadConsistency" value="STRONG" />
<property name="javax.jdo.PersistenceManagerFactoryClass"
value="org.datanucleus.store.appengine.jdo.DatastoreJDOPersistenceManagerFactory"/>
<property name="javax.jdo.option.ConnectionURL" value="appengine"/>
<property name="javax.jdo.option.NontransactionalRead" value="true"/>
<property name="javax.jdo.option.NontransactionalWrite" value="true"/>
<property name="javax.jdo.option.RetainValues" value="true"/>
<property name="datanucleus.appengine.autoCreateDatastoreTxns" value="true"/>
</persistence-manager-factory>
Должно быть, я упускаю здесь что-то важное, потому что все подходы терпят неудачу...
EDIT2: когда я разделяю задание на две транзакции, в журнале говорится, что транзакция записи выловлена, а затем начинается транзакция чтения. Но он не находит только что сохраненный объект. Он также всегда говорит Level 1 Cache of type "weak" initialised
. Неделя плохая или хорошая?
Около 30% запросов идут не так... Может быть, это какая-то проблема с ленивой загрузкой запросов?