【发布时间】:2017-11-30 08:11:47
【问题描述】:
我是 Objectify 编码的新手,我需要您的帮助来解决多对多关系查询的问题。
我有 2 个名为 User 和 Installation 的实体:
@Entity
public class User {
@Id private String login;
private String password;
@Index private String name;
@Index private String firstName;
@Index private byte right;
}
@Entity
public class Installation {
@Id private long id;
@Index private long clientId;
@Index private String name;
private String address1;
private String address2;
@Index private String postCode;
private String city;
@Index private String countryCode;
@Index private int status;
}
一个用户可以访问多个安装,一个安装可以有多个用户:多对多关系。我想映射这些实体,但我不想在加载用户时系统地加载安装。因此,我创建了一个用于映射用户和安装的实体:
@Entity
public class InstallUser {
@Id private Long id;
@Index Key<User> userKey;
@Index Key<Installation> instalKey;
public void setLink(User user, Installation instal){
//initialize
this.userKey = Key.create(User.class, user.getLogin());
this.instalKey = Key.create(Installation.class, instal.getId());
}
}
你能帮我把查询写到:
- 加载由其登录名 (@id) 标识的用户的所有安装;
- 加载所有有权访问由其 ID (@id) 标识的安装的用户;
- 加载由登录名 (@id) 标识并按权限过滤的用户的所有安装(例如,right=2)。
提前感谢您的帮助。
【问题讨论】:
标签: google-app-engine objectify