0

我想将 SQL 查询结果分配给非实体类中的 Java 对象。我的查询正在计算表 A 中映射到另一个表 B 的记录数。

@Query(value="select count(a.id) from table1 a join table2 b on a.id=b.id group by a.id", nativeQuery=true)

非实体类

   public class Sample {

    //assign query result to count variable
    private long count;
   // getters and setters


    }

A 和 B 是实体类,我正在选择实体 A 和 B 的指定列,并将这些列包含在 Sample.class 中,并在 REST 调用上将数据作为 JSON 发送。

现在我的问题是将计数结果分配给计数变量。

提前致谢

4

1 回答 1

0

如何使用“分组依据”到投影(非实体类)中进行 JPQL 查询?

场景您有两个表:User 和 User_Role,并且您想知道系统中有多少用户具有“公共”角色以及有多少用户具有“管理员”角色(如果存在任何其他角色)。

例如:我想要一个查询,让我知道有两个用户具有“公共”角色,一个用户具有“管理员”角色。

最简单的例子:

@Query("SELECT ur.roleName, count(u.id) from User u left join u.userRole ur group by ur.roleName")
List<Object[]> getCounts();

在这种情况下,处理结果比您通常想要的要复杂得多。您将不得不遍历对象的列表和数组。

查询到投影示例:

@Query("SELECT new com.skjenco.hibernateSandbox.bean.GroupResultBean(ur.roleName, count(u.id)) from User u left join u.userRole ur group by ur.roleName")
List<GroupResultBean> getCountsToBean();

这将为您提供一个更易于使用的列表。

代码示例:https ://github.com/skjenco/hibernateSandbox/blob/master/src/test/java/com/skjenco/hibernateSandbox/repository/UserProjectionExampleTest.java

于 2018-09-21T03:18:01.633 回答