有如下的数据结构
角色表
create table role(
roleid integer,
rolename varchar2(32)
)
用户表
create table userinfo(
userid integer,
username varchar2(32)
)
用户和角色关联表
create table user_role(
userid integer,
roleid integer,
)
java的实体对象也比较简单就不贴出来了,其中Userinfo.java中定义了关联
private List roleList = new ArrayList();
@ManyToMany
@JoinTable(name = "user_role", joinColumns = { @JoinColumn(name = "userid") }, inverseJoinColumns = { @JoinColumn(name = "roleid") })
@Fetch(FetchMode.SUBSELECT)
@OrderBy("roleid")
public List<Role> getRoleList() {
return roleList;
}
public void setRoleList(List<Role> roleList) {
this.roleList = roleList;
}
现在我像实现的查询效果是这样的,
有已经一个用户对象,userid=5150,我想查询出角色列表,但是要过滤掉用户5150已经拥有的角色,就是要得到还有和用户5150建立关联的所有角色列表。 下面是标准的sql的查询方式
select * from role where not exists (select * from user_role where role.roleid=user_role.roleid and user_role.userid=5150)
我想请问在hibernate如何通过QBC或者Hsq语句来进行查询。
谢谢