Сегодня я впервые использую 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();
}
}
Я уже установил
в моем jdoconfig.xml
. Нужно ли мне указывать в конфиге какие-то другие данные о транзакциях? У кого-нибудь получился рабочий jdoconfig.xml
? Или проблема в другом? Некоторое кеширование между ними?
EDIT: Что я пробовал:
PersistenceManager
с вызовом PMF.get ().getPersistenceManager ()
несколько раз 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>
I здесь должно быть не хватает чего-то центрального, потому что все подходы терпят неудачу ...
EDIT2: Когда я разделяю задание на две транзакции, журнал сообщает, что транзакция записи завершилась, и затем начинается транзакция чтения. Но он не находит только что сохраненный объект. Всегда указывается Кэш уровня 1 типа "weak" инициализирован
. Неделя - это плохо или хорошо?
Около 30% запросов не выполняются ... Может быть, проблема с загрузкой ленивых запросов?