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是?的用户。