将多次到数据存储区的行程折叠成一次行程?

时间:2010-04-19 22:42:59

标签: google-app-engine

有没有办法将多次到数据存储区的行程合并为一次?我有这样的事情:

class User {
    @PrimaryKey
    private String mUsername;
}

class Horse {
    @PrimaryKey
    @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
    private Key mKey;

    @Persistent
    private String mOwnerUsername;
}

class Cow {
    @PrimaryKey
    @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
    private Key mKey;

    @Persistent
    private String mOwnerUsername;
}

用户可以拥有许多马匹或奶牛。现在,为了获得所有用户的马匹和奶牛,我正在三次单独访问数据存储区,并进行三次单独的查询,例如:

User user = select from Users where userid = 'abc';
List<Horse> horses = select from Horses where ownerUsername = 'abc';
List<Cow> cows = select from Cows where ownerUsername = 'abc';

有没有办法将这三者合并为一次到数据存储区?我不想制作User类的马和牛成员,因为它们可能有很多,并且不想在每次加载User时加载它们。用户也不拥有马或牛的唯一所有权,他们可以由许多不同的实体拥有。

由于

1 个答案:

答案 0 :(得分:1)

如果您使用密钥名称,则可以将第一个查询转换为fetch by key操作,这样会更快。如果您使用的是JDO以外的框架,则可以将按键操作的多个获取分组到一个往返中。

但是,您不能将多个查询折叠为单个请求,也不能(当前)执行异步请求。