查询条件是User属性和与User多对多关联的UserGroup的id和Role的id。
我开始是这样写的:
String hql = "select u from User u join fetch u.userGounp ug join fetch u.role r where u.userName like '%孙悟空%' and ug.id=2 and ug.id=4 and r.id=1";
但并没有查出来结果,而数据库中是有一条user满足条件的。
后来尝试写这样语句:
String hql = "select u from User u join fetch u.userGounp ug join fetch u.role r where u.userName like '%孙悟空%' and ug.id in(2,4) and r.id=1";
但查询的结果中,同一个id 的User信息出现了两次,哪怕使用左连接也一样查询出两条同一个id,而且满足ug.id=2或者ug.id=4的也查询出来了。
有哪位帮我解决一下吗? 我要的要求是:
1.查询条件可以使User的属性 (ps:userName)
2.满足第一个要求下查询它的用户组是满足条件(ps:userGroup.id=2 and userGroup.id=2)
3.是角色跟第二条要求一样
4.分页,分页方法我已经写好了(getListForPage(hql, fromIndex,pageSize);)
DISTINCT 可以去除重复 但是还是不能解决查询——用户包含多个用户组 获取角色
把数据库的数据贴出来
数据库不好贴 我贴出了pojo类
这个User的pojo
private int id;
private String userName;
private String userAccount;
private String userPassword;
private int userSex;
private String userDocumentType;
private String userDocumentNum;
private String userPhone;
private String userEmail;
private Date userCreatetime;
private String userSign;
private Set userGounp = new HashSet();
private Set role = new HashSet();
这个是Role的pojo
private Integer id;
private String name;
private String code;
private String sign;
private Set users;
private Set menus;
这个是UserGroup的pojo
private int id;
private String groupName;
private String groupLeader;
private String groupSign;
private Set userSet = new HashSet();
hibernate真正的多对多关联你似乎没学过?hibernate表之间的关联,可以在他们各自的映射文件里关联,然后直接查询出某一个user,然后通过user来取出相关联表的数据,你可以去看一下《javaweb从入门到精通》这本书,里面很详细的有实例