【发布时间】:2013-08-14 02:18:26
【问题描述】:
我正在寻找的似乎是 here 的回答,但由于我对 JPA 不太熟悉,因此我不确定是否要重复。
我的情况涉及3个类:Role、User和Pool,描述如下:
public class Role extends Model {
@Id public Long id;
public String name;
// ...
}
public class User extends Model {
@Id public Long id;
public string displayName;
// ...
@ManyToMany
public List<Role> roles;
// ...
}
public class Pool extends Model {
@Id public Long id;
public String name;
// ...
@ManyToMany
public List<Role> roles;
public List<User> getMembers() {
// ???
}
}
(注意:也可能存在资源限制或权限,可以分配给用户和池,可用于过滤...或过滤...池中允许的用户.)
我添加了一个static 成员
public static final Finder<Long, User> find = new Finder<Long, User>(Long.class, User.class);
到Pool 类(应该在getPoolMembers 方法中使用),但我不确定如何获取具有相交组的所有用户(可能还有其他约束)。
感谢您的帮助。
【问题讨论】:
-
用户是否有一个池字段来链接两者,或者他们是否通过角色以某种方式链接?
-
是的,他们共享相同的角色,但本质上,我不希望
Pool和User之间有任何直接关系;User是池的一部分,如果它共享任何相同的Role -
我不确定您是否可以配置 Ebean 来做到这一点。我认为你最好做一个 RawSql 查询,所以你可以自己配置连接。我假设您想要的查询类似于
select * from User left join Pool on (User.role=Pool.role) where (Pool.id=$id)其中$id 是您调用getPoolMembers 方法的池的ID,对吗?我面前没有 Ebean RawSql 的语法,但我会检查一个例子......