答案 0 :(得分:1)
看起来你要求在事务中使用对此的新支持进行故障转移读取。正如错误消息所解释的那样,这是不可能的,因为为了成为事务性的,它必须始终读取最新的数据。您需要为事务内的操作禁用故障转移读取。
答案 1 :(得分:1)
首先非常感谢@ Nick的回答。在这里,我以一种更直接的方式澄清答案,以解决我的问题,以防其他人遇到同样的问题在这里寻求帮助。
似乎最终的一致性,您无法在事务中进行查询,至少是按键查询,否则将引发我的问题中描述的异常消息。在Google App Engine的related official documentation中,它没有直接指出,但是有一些这样的句子:
所有更新操作(创建,更新, 删除)发生在主存储中。一个 强烈一致地读取实体 可能仍然是一个操作或 交易背后,因为一个 事务是在它之后应用的 提交。
最终的一致性可能需要从主存储位置以外的存储位置读取,并且可能与事务一致性发生冲突,因此不允许在我看到的事务中读取事件一致性。
默认情况下使用强一致性而不进行任何配置。对于我自己的问题,我刚刚删除了persistence.xml(JPA)中的以下行:
<property name="datanucleus.appengine.datastoreReadConsistency" value="EVENTUAL" />
再次感谢,尼克!