我想将SQL查询结果分配给非实体类中的Java对象。 我的查询正在计算映射到另一个表B的表A中的记录数。
@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发送。
现在我的问题是将计数结果分配给count变量。
预先感谢
答案 0 :(得分:0)
如何使用“分组依据”到投影(非实体类)中进行JPQL?
方案中有两个表:User和User_Role,并且您想知道系统中有多少个用户具有“公共”角色,有几个用户具有“ admin”角色(如果存在,则还有其他任何角色)。
例如:我想要一个查询,让我知道有两个用户具有“公共”角色,而一个用户具有“管理员”角色。
最简单的例子:
@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();
这将为您提供一个更好地使用的列表。