Java 如何使用具有多对多关系的GAE数据存储事务?

Java 如何使用具有多对多关系的GAE数据存储事务?,java,google-app-engine,jdo,Java,Google App Engine,Jdo,我有一个数据模块,其中包括供应商对象和供应商类别对象。每个供应商有多个类别,每个类别可以有多个供应商。 我需要列出给定类别下的所有供应商,以及给定供应商下的所有类别 主要操作是针对供应商的,因此我正在编写代码,根据对供应商的编辑操作更新/删除VendorCategory对象 我希望这些操作是事务性的:即当供应商创建/删除/编辑完成时,供应商类别的refcount会更新,否则不会更新。但我已经将事务设置为无主的多对多关系,所以很抱歉,不可能使用事务,因为它们位于不同的实体组中 有没有更好的方法来模

我有一个数据模块,其中包括
供应商
对象和
供应商类别
对象。每个供应商有多个类别,每个类别可以有多个供应商。 我需要列出给定类别下的所有供应商,以及给定供应商下的所有类别

主要操作是针对供应商的,因此我正在编写代码,根据对供应商的编辑操作更新/删除
VendorCategory
对象

我希望这些操作是事务性的:即当供应商创建/删除/编辑完成时,供应商类别的refcount会更新,否则不会更新。但我已经将事务设置为无主的多对多关系,所以很抱歉,不可能使用事务,因为它们位于不同的实体组中

有没有更好的方法来模拟这种关系?我是否需要接受它,与野兽的非交易性生活在一起?我考虑过使用任务队列定期检查和清理关系,这是最好的方法吗?

在对
供应商进行更改时,添加一个更新
VendorCategory
。仅当数据存储写入成功时,才会添加该任务。在任务内处理其自己事务中类别的更新和删除


您可能想从Google IO 2010中签出“”。具体来说就是物化视图。

我最近写了一篇博客文章,描述了不同的方法。您选择哪一个取决于您的情况和“所有权”——例如,如果供应商“拥有”其类别列表,您可以最简单地将其存储为供应商实体上的列表。

我描述了一个类似的问题,我从一个模型开始,其中供应商有一个类别列表,但是我需要得到一个独特类别的列表&属于某个类别的供应商,所以我把这些类别拉到它们自己的对象中。很可能我需要换一种不同的模式;我还在摆弄。