gpt4 book ai didi

java - SQL & Hibernate 获取带有连接表的项目列表

转载 作者:行者123 更新时间:2023-11-29 03:29:05 25 4
gpt4 key购买 nike

我正在尝试从数据库中获取此逻辑:

通过名称获取角色,并且仅获取由在表单上输入的用户 ID 指定的用户的角色。

表格:

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]

并且不知道如何显示对象包含的数据,我试过像这样使用 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,但没有机会..

最佳答案

我认为你可以这样做:

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();

然后你可以通过循环列表来做你的事情

希望对您有所帮助!

关于java - SQL & Hibernate 获取带有连接表的项目列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32707224/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com