User和Role是多对多的关系,User和HandMedical是一对多的关系,现在根据角色名得到有HandMedical的用户:
String sql="from User u " +
"where u in(select elements(r.users) from Role r where r.name=?) " +
"and u.id in (select h.user.id from HandMedical h)";
elements(r.users)的意思是:在多对多关系中,即从Role和User的中间表中得到所有的用户。其中users是Role中设置的User的set集合属性。
select elements(r.users) from Role r where r.name=?的意思是:从Role中表中得到name是?的用户。
本文介绍了一种使用SQL查询特定角色下拥有HandMedical记录的用户的方案。通过两个关键子句从多对多关系中筛选目标用户。
54

被折叠的 条评论
为什么被折叠?



