我遇到了“无法在单个事务中对多个实体组进行操作”。在使用APPENGINE FOR JAVA w/JDO时使用以下代码时出现问题:无法将我的头围绕appengine数据存储持久性
PersistenceManager pm = PMF.get()。getPersistenceManager();
查询q = pm.newQuery(“SELECT this FROM”+ TypeA.class.getName() +“WHERE userId == userIdParam”); q.declareParameters(“String userIdParam”); List poos =(List)q.execute(userIdParam); (TypeA a:allTypeAs){ a.setSomeField(someValue); } pm.close(); }
这个问题似乎是,我不能在同一时间对多个实体进行操作,因为它们在事务中不在同一个实体组中。虽然看起来像我在一个事务中我没有,AppEngine上生成一个,因为我有以下我jdoconfig.xml设置:
<property name="datanucleus.appengine.autoCreateDatastoreTxns" value="true"/>
精细。到目前为止,我想我明白了。
但 - 如果我在上面的代码中用TypeB替换TypeA - 我不会收到错误。我不相信类型a和类型b有什么不同 - 它们都具有相同的关键结构。他们确实有不同的领域,但这不重要,对吗?
我的问题是 - TypeA和TypeB之间可能会有什么不同,他们会给出这种不同的行为?因此,你我从根本上误解,这种行为,甚至可能存在....
谢谢。
使用autoCreateDatastoreTxns可能是一个糟糕的主意,因为你的文章大纲的原因。 – 2010-06-08 12:56:39
我认为这是来自appengine文档的推荐设置。 – aloo 2010-06-08 23:23:11
“我们推荐使用的JDO配置将名为datanucleus.appengine.autoCreateDatastoreTxns的属性设置为true,这是一个App Engine特定的属性,它告诉JDO实现将数据存储区事务与应用程序代码中管理的JDO事务相关联。正在从头构建一个新的应用程序,这可能是你想要的。“ – aloo 2010-06-08 23:24:05