我正在使用 Objectify 4 中的事务来更新 Kind_A 的一堆实体。这些有一些我想在事务中修改的字段,还有一些对其他实体的引用,例如
class Kind_A {
@Id Long id;
@Parent
@Load
Ref<Kind_P> parent;
String name;
@Load
Ref<Kind_B> b;
}
我这里的实体组是由 Kind_P 的一个实例定义的,它会有自己Ref
的 s,例如:
class Kind_P {
@Id Long id;
@Load
Ref<Kind_Q> q;
}
在我的事务中,我将ofy().load()
使用祖先查询将多个实体作为列表,如下所示:
ofy().load().type(Kind_A.class).ancestor(p).list();
然后我将迭代列表,修改,比如说,name
字段(不是Ref<>
s),然后ofy().save()
是列表。
我load()
应该拥有相同的所有实体@Parent
(p
),因为它是祖先查询。
因此,从表面上看,当我load()
和save()
我的Kind_A
实体时,我正在处理一个实体组 ( p
)。
但是,我得到一个IllegalArgumentException: operating on too many entity groups in a single transaction
. 我猜这是因为 Objectify 正在加载对象图,包括所有的Kind_B
s 和Kind_Q
s。
这个对吗?因此,事务的范围突然扩展到远远超出定义的实体组p
。
如果是这样,有没有办法告诉 Objectify 忽略事务中的 @Load 注释?
有没有办法(比如在 Eclipse 调试器中)我可以找出参与事务的实体?
任何见解将不胜感激!