我对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查询。
应该这样做:
from Portailuser u join u.portailroles r where r.name=:roleName