HQL:使用ManyToMany的Hibernate查询

Kiv*_*iva 13 java orm hibernate hql

我有一个关于HQL查询和hibernate的问题.

我有一个用户类和一个角色类.用户可以拥有许多角色.所以我有这样的ManyToMany版本:

在用户类中:

@ManyToMany(fetch = FetchType.LAZY)
@oinTable(name = "PORTAIL_USERROLE", joinColumns = { @JoinColumn(name = "USERID", nullable = false, updatable = false) }, inverseJoinColumns = { @JoinColumn(name = "ROLE", nullable = false, updatable = false) })
public Set<Portailrole> getPortailroles() {
    return this.portailroles;
}
Run Code Online (Sandbox Code Playgroud)

在角色类中:

@ManyToMany(fetch = FetchType.LAZY)
@JoinTable(name = "PORTAIL_USERROLE", joinColumns = { @JoinColumn(name = "ROLE", nullable = false, updatable = false) }, inverseJoinColumns = { @JoinColumn(name = "USERID", nullable = false, updatable = false) })
public Set<Portailuser> getPortailusers() {
    return this.portailusers;
}
Run Code Online (Sandbox Code Playgroud)

此映射创建了第3个表(PORTAIL_USERROLE),其中存储了关系.一切都很好.当我有用户时,我会检索角色.

但是,我的问题是:在HQL查询中,我如何获得具有特定角色的所有用户?任何类代表PORTAIL_USERROLE表,所以我不知道如何进行我的HQL查询.

Mau*_*rry 22

这应该这样做:

from Portailuser u join u.portailroles r where r.name=:roleName
Run Code Online (Sandbox Code Playgroud)