我有一个对象:
@Entity
@Table(name = "users", catalog = "adm", uniqueConstraints = @UniqueConstraint(columnNames = "loginUser"))
public class User implements GenericEntityPK<Integer> {
private Set<Permission> permissions = new HashSet<Permission>(0);
@ManyToMany(fetch = FetchType.LAZY)
@JoinTable(name = "user_l_permission", catalog = "adm", joinColumns = {
@JoinColumn(name = "idUser", nullable = false, updatable = false) }, inverseJoinColumns = {
@JoinColumn(name = "idPermission", nullable = false, updatable = false) })
public Set<Permission> getPermissions() {
return this.permissions;
}
}
我想用where子句选择用户实体并获取权限集合。换句话说,权限集合必须仅包含满足条件的元素。 我已尝试使用 SetJoin 进行此操作,但没有成功..
有办法吗?
答案 0 :(得分:0)
我建议您在需要时查询与用户匹配的权限和所需的过滤器。您甚至可以使用瞬态集合在您的实体中缓存此集合,以在对象中传递它。在关系上使用过滤器最终会导致问题并破坏缓存,因为对象中的内容不再是数据库中内容的真实表示。
尽管如此,没有JPA方法可以做到,但Eclipselink支持additional criteria