我使用HRD是因为我想使用实体组对单个事务中的多个实体进行更改。

了解非事务性(非祖先)查询可能看不到先前提交的事务的全部,部分或全部结果。

我现在面临的问题是:
提交用于向数据库添加新记录的事务后

  Transaction tx = pm.currentTransaction();
  tx.begin();
  pm.makePersistent(object);
  tx.commit();



接着查询已提交的记录,有时它将返回结果,有时仅返回null

  Query q = pm.newQuery(queryStatement);
  CompanyProfile result = (CompanyProfile) q.execute();



p / s:关闭HRD时,它可以正常工作。

任何解决方法?

谢谢
Rgds
J

最佳答案

无法解决:HRD最终始终是一致的:http://code.google.com/appengine/docs/python/datastore/queries.html#Setting_the_Read_Policy_and_Datastore_Call_Deadline

解决它的一种方法是使用get而不是query。 Get / put / delete在HRD中是高度一致的,而查询最终是一致的:http://code.google.com/appengine/docs/java/datastore/hr/

如果这是一个用户会话内的保存后立即查询的方案,则可以查询数据并将手工保存的实体添加到列表中。

09-05 11:25