我试图从数据库中获取这个逻辑:
按名称获取角色,并且只在表单上输入userid指定的用户角色。
表格:
Roles [ idrole, role]
User [iduser, ...]
User_Roles [iduser, idrole]
我在SQL中这样做了:
Query query = getSessionFactory().getCurrentSession().createSQLQuery("SELECT role FROM roles WHERE idrole IN (SELECT idrole FROM User_Roles WHERE iduser = :Iduser)").setParameter("Iduser", iduser);
但这只会返回角色,而不会返回以后需要直接更新用户角色的ID
当我这样做时:
Query query = getSessionFactory().getCurrentSession().createSQLQuery("SELECT role, idrole FROM roles WHERE idrole IN (SELECT idrole FROM User_Roles WHERE iduser = :Iduser)").setParameter("Iduser", iduser);
它返回:[[Ljava.lang.Object;@1e9b4920, [Ljava.lang.Object;@2e0670e5]
并且无法获得如何显示Object包含的数据,我尝试了这样的hibernate:
Query query = getSessionFactory().getCurrentSession().createQuery("from Role r INNER JOIN r.userRoles a where a.iduser = :Iduser").setParameter("Iduser", iduser);
它返回类似[User Object,Roles Object]的东西,它驱使我尝试使用SQLQuery,但没有机会......
答案 0 :(得分:0)
我认为你可以这样做:
Query query = getSessionFactory().getCurrentSession().createSQLQuery("FROM roles WHERE idrole IN (SELECT idrole FROM User_Roles WHERE iduser = :Iduser)").setParameter("Iduser", iduser);
并得到它:
List<Roles> all = (List<Roles>)query.list();
然后,您可以通过循环列表来开展业务
希望这有帮助!