我有一个UserAccount,其中包含以下列表。以下列表保存为自己的实体。我通常不需要以下列表,因此,我不使用@Load。但是,我有一种情况,我想加载多个UserAccounts及其以下内容。
所以,我需要这样的东西:
OfyService.ofy().load().type(UserAccount.class).limit(200).loadReference("followerRef").list();
UserAccount的示例:
@Entity
@Cache
public class UserAccount {
@Id private String email;
@Index
private String nickname;
private Ref<UserFollowing> followingRef;
}
答案 0 :(得分:2)
我相信Objectify
已经提供了一种以Load Groups
的形式完成您所做的事情的方法。正如您正确指出的那样,使用@Load
注释会自动检索UserAccounts
followingRef
,这是您不希望在大多数情况下发生的事情。
要使用UserAccount
加载followingRef
列表,您首先必须对您的实体应用以下简单修改:
@Entity
public class UserAccount {
public static class Everything {}
@Id Long id;
@Load(Everything.class) Ref<UserFollowing> followingRef;
}
然后,您可以执行以下操作来加载单个UserAccount对象:
// Doesn't load followingRef
UserAccount ua = ofy().load().key(userAccountKey).now();
// Does load followingRef
UserAccount ua = ofy().load().group(Everything.class).key(userAccountKey).now();
与此类似,您可以使用UserAccount
加载followinfRef
个对象列表:
// In your case you'd do something like
List<UserAccount> accounts = ofy().load()
.type(UserAccount.class)
.group(Everything.class)
.list();
这应该有希望解决你的问题。 我不知道该代码是否编译,但是如果它不是很难修复的话。
For further reading click here and scroll down to Load Groups section