我有以下实体(删除了不相关的字段/方法)。
public class HitsStatsTotalDO
{
@Id
transient private Long targetId;
public Key<HitsStatsTotalDO> createKey()
{
return new Key<HitsStatsTotalDO>(HitsStatsTotalDO.class, targetId);
}
}
所以...我正在尝试为10个对象进行批量获取,我使用HitsStatsTotalDO.createKey()
为其构建键。我试图在这样的事务中获取它们:
final List<Key<HitsStatsTotalDO>> keys = ....
// This is being called in transaction..
Map<Key<HitsStatsTotalDO>, HitsStatsTotalDO> result = DAOBase.ofy().get(keys);
抛出以下异常:
java.lang.IllegalArgumentException: operating on too many entity groups in a single transaction.
请您详细说明有多少太多以及如何解决?我在文档中找不到确切的数字。
谢谢!
答案 0 :(得分:5)
问题不在于您检索的实体数量,而是它们位于多个实体组中。要么在事务外部进行提取,要么使用XG (Cross Group) transaction。
答案 1 :(得分:1)
在单个交易中,您可以在同一个实体组中操作实体。