【发布时间】:2018-01-28 15:10:15
【问题描述】:
我有一个包含产品的数据库表,想通过 Querydsl 查找同名产品
我有这样的事情:
QProduct product = QProduct.product;
JPAQuery query = new JPAQuery(entityManager);
Map<String, List<Product>> = query.from(product)
.transform(groupBy(product.name).as(list(product)));
然后我得到一个以产品名称为键的地图。对于每个名称键,我都会得到一个包含具有此名称的产品的列表。 由于我想查找名称重复项,因此我只需要大于 1 的产品列表。所以我需要一个带有嵌套 SQL 语句的 where 子句来忽略具有唯一名称的产品:
SELECT * FROM Product p1
WHERE (SELECT COUNT(*) FROM Product p2 WHERE p1.name=p2.name)>1
如何在上面的 querydsl 查询中包含此内容。或者是否有其他方法可以将地图中的产品列表限制为仅大于 1 的列表。
也许有可能在 querydsl 中使用 HAVING COUNT?
谢谢, 尼克
【问题讨论】:
-
真的没人吗?