今天,这是我第一次使用GWT和JDO。我正在本地 Debug模式下使用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
吗?还是其他地方存在问题?之间有一些缓存?编辑:我尝试过的事情:
PersistenceManager
来使用相同/不同的PMF.get().getPersistenceManager()
PersistenceManager
上为true 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>
我必须在这里错过一些重要的事情,因为所有方法都失败了...
编辑2:当我将作业拆分为两个事务时,日志显示写事务被捕获,然后读事务开始。但是它找不到唯一的永久对象。它也总是说
Level 1 Cache of type "weak" initialised
。周是好还是坏?它大约有30%的请求出错了...可能是一些惰性查询加载问题吗?
最佳答案
Franz,JDO Config中的默认读取一致性为STRONG。因此,如果您尝试朝这个方向前进,它将不会带您到任何地方
检查一下,因为我认为它提到的内容与您遇到的情况类似,但提交的数据未在查询中返回。如前所述,它不是并发的,但是它解释了提交过程。
http://code.google.com/appengine/articles/transaction_isolation.html
另外,另一种方法是使用Extents进行查询,并找出是否可以解决您正在查看的特定用例,因为我认为您正在提取表中的所有记录。
编辑 :
由于在您提到的代码段中,它查询整个表。如果这是您需要的,则可以使用范围...
使用它的方法是通过调用Extent ext = getExtent(<Entity Class name>)
在persistenceManager单例对象上。然后,您可以遍历范围
在此处查看文档并在页面上搜索范围。
http://code.google.com/appengine/docs/java/datastore/jdo/queries.html