java - 如何在 JPA 中选择一列并按此列分组?
问题描述
我需要做某事
select city from users group by city;
如何使用 Spring JPA 执行此操作?也许规格?根据传递的参数选择类似的东西呢?
List<Object> getValuesGroupedBy(String columnName);
我尝试使用规范,你只能这样做
query.groupBy(root.get(column));
这确实按指定的列分组。
但是当您尝试进行选择时
query.select(root.get(column)).groupBy(root.get(column))
它做某事不真实。
或者,我也尝试过使用 Projections。我说好吧,我需要城市
interface OnlyCity {
String getCity();
}
然后我的 JPA 如下所示:
List<OnlyCity> findAllBy();
而且这只选择了一列,这也可以。但是如何把规范放在那里,所以我至少可以执行我上面描述的操作?
解决方案
您可以使用 JPA 使用类似的东西。当然,我的代码是为 Ejb 设计的,但主要概念是相同的。
@Entity
@Table
@NamedQuery(name="groupBy",query="SELECT c.city from City c group by c.city")
class City{
String city;
....
....
}
class CityManager{
@PersistenceContext
EntityManager manager
public List<String> groupBycity()
{
return manager.createNamedQuery("groupBy").getResultList();
}
}
推荐阅读
- javascript - 附加到循环内的按钮时,如何在 JavaScript 中解析 XML 并在 nodeValue 中保留空格?
- ios - 使用 GEOSwift 时,如何创建宽度以米为单位的缓冲 LineString?
- c# - 登录后如何进行网页抓取
- css - React Native flex没有给组件高度
- linux - 模拟在 Debian/Ubuntu 中运行程序
- php - Symfony4通过ajax调用请求数据为空
- google-apps-script - Google Sheets 使用 Apps 脚本插入散点图 + 趋势线
- mysql - 连接多个表时如何在mysql中首先排序和分组
- c# - addScriptToEvaluateOnNewDocument Selenium(不起作用)
- javascript - 如何构建一个 npm 包,以便它能够被导入/需要