一尘不染

HQL:使用ManyToMany进行休眠查询

hibernate

我对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;
}

在角色类中:

@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;
}

此映射创建了存储关系的第三个表(PORTAIL_USERROLE)。像这样一切正常。当我有一个用户时,我将检索角色。

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


阅读 269

收藏
2020-06-20

共1个答案

一尘不染

应该这样做:

from Portailuser u join u.portailroles r where r.name=:roleName
2020-06-20