我正在使用JDO(3.x,datanucleus 2)在Google應用程序引擎(java)中的一個應用程序中保留對象。我的電話的順序是這樣的:在Servlet過濾器谷歌應用程序引擎:JDO deletePersistent不一致
打開持久化管理器(servlet的1) - (:通過servlet 1)使用ThreadLocal的
從DAO類呼叫pm.findByObjectId
通話pm.delete從DAO類持久化(通過servlet 1)
調用pm.newQuery以列出所有現在在db中的對象(通過servlet 1) - 寫入響應(json)
在Servlet過濾器
關閉持久性管理器 - 內最後的doFilter方法
然而,我的對象不被刪除,直到我關閉時在步驟5此外,它不consitent,有時它確實被刪除!(沒有想出什麼時候)。理想情況下,我希望在上面的步驟3中刪除對象,以便在第4步中查詢運行時,它將返回更新的列表。
任何人都可以請讓我知道,如果我可以改進這個設計插入/刪除更原子,這一點。還是僅僅因爲寫入數據庫太慢?
這裏是我的jdoconfig.xml
<persistence-manager-factory name="transactions-optional"> <property name="javax.jdo.PersistenceManagerFactoryClass" value="org.datanucleus.api.jdo.JDOPersistenceManagerFactory"/> <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.singletonPMFForName" value="true"/> </persistence-manager-factory>
我可以在什麼地方配置它,這樣我就不必在任何地方開始/提交這個事情了嗎?我已經在原始問題 – Supra
上面發佈了我的jdoconfig。事實上,語句被緩存到pm關閉,這表明GAE爲您設置了一個事務上下文,所以我不確定如何覆蓋它以執行自動提交。 。檢查你的GAE配置。您可能還想嘗試重置datanucleus.nontx.atomic = true。 – TheArchitect