weixin_42357729 2010-03-01 11:06
浏览 221
已采纳

请问hibernate中如何实现不存(not extsts)在查询?

有如下的数据结构
角色表
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语句来进行查询。
谢谢

  • 写回答

3条回答 默认 最新

  • zhangrunzgz 2010-03-03 09:34
    关注

    from role left join user_role on userid <> 5150 。类似这样就可以实现了。我没具体测试,你试试吧。 :D

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 我的代码无法在vc++中运行呀,错误很多
  • ¥50 求一个win系统下运行的可自动抓取arm64架构deb安装包和其依赖包的软件。
  • ¥60 fail to initialize keyboard hotkeys through kernel.0000000000
  • ¥30 ppOCRLabel导出识别结果失败
  • ¥15 Centos7 / PETGEM
  • ¥15 csmar数据进行spss描述性统计分析
  • ¥15 各位请问平行检验趋势图这样要怎么调整?说标准差差异太大了
  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题
  • ¥15 wpf界面一直接收PLC给过来的信号,导致UI界面操作起来会卡顿
  • ¥15 init i2c:2 freq:100000[MAIXPY]: find ov2640[MAIXPY]: find ov sensor是main文件哪里有问题吗