群里有朋友求解一个问题,高分求一条HQL多对多查询语句 。
问题描述见 http://topic.csdn.net/u/20090621/16/4eac6fe0-bf3e-422e-a697-f7584732f66e.html, 摘要如下:
一个学科表(Field),一个用户表(User),多对多关系。
学科表有两个字段,id和descripiton,用户表有众多字段,不罗列了
Field中有SET集合users
User中有SET集合fields
现在要查掌握id like '520%'的女性用户
我这样写的:
from User u,Field f where u.gender='m' in (select f.users from Field where f.id like '520%')
持续报错!
我的项目代码中恰好有一个多对多的关联映射的类:User(用户)和Role(角色),其中,User类中有 roles集合,而Role类中有users集合。我用我的代码测试了一番。
首先写了下面这句:
select user from User user where user.sex='男' and user in (select role.users from Role role where role.id>5)
这样不行,报错。原因是,Hibernate的HQL语句中的“in条件”句如:x in(‘a’,’b’,’c’) ,要求的是x是(‘a’,’b’,’c’)中的一个元素,而select role.user