当前位置: 首页 > 面试题库 >

JPA选择计数不同

方飞翼
2023-03-14
问题内容

我需要一个相对简单的查询,但是JPA使其很难创建。

SQL变量如下所示:

SELECT COUNT(DISTINCT OrderID) AS DistinctOrders FROM Orders WHERE CustomerID=7;

[编辑:OrderID不是主键。表格中可以有更多等于的OrderId]

我需要设置CustomerID一个传递给我的方法的变量。

我找到了文档,CriteriaQuery distinct()但似乎无法将它们全部包装在一起。

这是我到目前为止的内容:

CriteriaBuilder cb = this.em.getCriteriaBuilder();
CriteriaQuery<Order> c = cb.createQuery( Order.class );
Root<Order> order = c.from( Order.class );
Path<String> customerID = order.get( "customerID" );
c.where( cb.equal( customerID, theId ) );

问题答案:
CriteriaBuilder cb = this.em.getCriteriaBuilder();
CriteriaQuery<Long> c = cb.createQuery(Long.class);//the query returns a long, and not Orders
Root<Order> order = c.from( Order.class );
//c.select(cb.countDistinct(order));//and this is the code you were looking for
c.select(cb.countDistinct(order.get("orderID")));//for counting distinct fields other than the primary key
Path<String> customerID = order.get( "customerID" );
c.where( cb.equal( customerID, theId ) );


 类似资料:
  • 问题内容: 我正在尝试从以下查询中获取行数。我只得到行计数为1,但有35条记录。您能否让我知道如何从内部查询中获取计数? 谢谢 问题答案: 您缺少FROM,需要为子查询指定别名。

  • 问题内容: 我有一张包含所有美国邮政编码的表格。每行包含邮政编码的城市和州名称。我正在尝试获取在多个州显示的城市列表。如果在同一座城市中没有X个邮政编码,这将不是问题。 所以基本上,我只想将一个州的城市计数为1,而不是将城市/州计数为7次,因为该城市/州中有2个以上的邮政编码… 我不太确定该怎么做。我知道我需要使用count,但是如何告诉mysql仅将给定的城市/州组合计数为1? 问题答案: SE

  • Mine当前使用的是application.properties文件中包含: 提前致谢

  • 本文向大家介绍MySQL选择按值计数?,包括了MySQL选择按值计数?的使用技巧和注意事项,需要的朋友参考一下 您可以为此使用功能。让我们首先创建一个演示表 使用insert命令在表中插入一些记录。查询如下- 使用select语句显示表中的所有记录。查询如下- 以下是输出 这是选择按值计数的查询 以下是输出

  • 我有以下JPA实体结构。 我想写一个JPA查询,它将返回给定parent_id的PARENT_NAME和所有子级的计数。 t我能想到的唯一解决办法是加入并编写一个复杂的条件查询。 我想不出使用简单的JPA查询获得结果的方法。 有更简单的方法吗?

  • 但是如果页面没有传递任何内容,那么它将选择ALL。我不希望这种事发生。我知道mysql命令行有一个名为--select_limit的选项,那么我如何在全局范围内配置它来限制选择计数呢?例如在应用上。性质