0

我在我的 GWT 应用程序中使用 Data Nucleus JPA 来实现持久性。我在实体中的持久化 API 如下所示:


EntityManager em = EMF.getEM();

try {
    em.getTransaction().begin();
    if(!em.contains(this)){
       em.persist(this);
       em.flush();
    }
    em.getTransaction().commit();
} finally {
    em.close();
}

我正在关注这份文件:http ://www.datanucleus.org/products/datanucleus/jpa/transactions.html#local

此代码工作正常并提交数据。但是当我在提交后立即查询提交的记录时,有时不会查询实体。如果我在几秒钟后查询,它会被查询。请注意,此问题是间歇性的。

任何提示/建议可能是导致此间歇性问题的原因?

谢谢

4

2 回答 2

0

建议你在谷歌搜索“最终一致性”并阅读 GAE 文档,因为它提到了这个概念

于 2013-05-13T12:23:06.153 回答
0

这个页面讨论了Strcuturing for Strong Consistence,它为我解决了这个问题。https://developers.google.com/appengine/docs/java/datastore/structuring_for_strong_consistency

基本上在您的查询中包括祖先定义,例如,

查询 query = new Query("Entity").setAncestor(ancestorKey).setFilter(filter);

于 2013-07-02T22:09:27.727 回答