【发布时间】:2015-06-16 17:17:14
【问题描述】:
我在 JDO 查询和来自 App Engine 数据存储查看器控制面板的查询中看到了数小时前的陈旧数据:
。 . .
在实体编辑屏幕(可能使用祖先查询)上将其与以下内容进行比较:
。 . .
一个多小时前,我将该值从 . 更改为 --none--!我不知道为什么会发生这种情况,这令人愤怒!
根据 Google 的 GAE JDO documentation,查询应该返回具有强一致性的值:
要覆盖单个查询的读取策略,请调用其 addExtension() 方法:
Query q = pm.newQuery(Person.class);q.addExtension("datanucleus.appengine.datastoreReadConsistency", "EVENTUAL");可能的值是“EVENTUAL”和“STRONG”; 默认为“STRONG”,除非在配置文件 jdoconfig.xml 中另有设置。
嗯,这是我的jdoconfig.xml - 没有提到datastoreReadConsistency,所以它必须使用STRONG 对吧?
<?xml version="1.0" encoding="utf-8"?>
<jdoconfig xmlns="http://java.sun.com/xml/ns/jdo/jdoconfig"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://java.sun.com/xml/ns/jdo/jdoconfig">
<persistence-manager-factory name="transactions-optional">
<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"/>
<property name="datanucleus.appengine.datastoreEnableXGTransactions" value="true"/>
</persistence-manager-factory>
</jdoconfig>
我该怎么办?快把我逼疯了!
【问题讨论】:
-
我认为这不取决于你。似乎有一个问题,正如这里报告的groups.google.com/forum/?show_docid=fae072cf1c7db8b1#!topic/…
标签: java google-app-engine jdo google-cloud-datastore