【问题标题】:QueryDsl: Select count of rows that meets the criteriaQueryDsl:选择符合条件的行数
【发布时间】:2015-07-07 09:22:03
【问题描述】:

我在数据库中有 2 条记录。 我将在哪里执行此操作:

QLoginRegistryEntry loginregistryentry = QLoginRegistryEntry.loginRegistryEntry;
JPAQuery query = new JPAQuery(JPA.em());
List<LoginRegistryEntry> result;
result = query.from(loginregistryentry)
              .where(loginregistryentry.inDate.startsWith(yearAndMonth))
              .list(loginregistryentry);

System.out.println(result.size());

返回2,正确

当我这样做时:

QLoginRegistryEntry loginregistryentry2 = new QLoginRegistryEntry("a");
long count = query.from(loginregistryentry2).count();
System.out.println(count);

返回4,这是错误的

我做错了什么? 我应该如何下载符合条件的行数?

【问题讨论】:

  • 您不是在第二个查询中缺少“where()”子句吗?
  • 我觉得没关系。如果没有 where 部分声明,它应该只获取所有行。问题是我在那个特定的表中有 两条记录。但是count() 会返回两倍。第一个返回正确结果的查询 2,根本不做count()。它对所有记录进行门控,将它们放入列表中,然后计算该列表中的size()

标签: java count querydsl


【解决方案1】:

我不认为您是孤立地执行查询的。可能您只是重用了第一个查询中的查询对象并继续,您得到了一个交叉连接并得到了 2 * 2 = 4 个结果。

【讨论】:

  • 我记得,当我重用对象时出现错误。
猜你喜欢
  • 1970-01-01
  • 2016-05-31
  • 1970-01-01
  • 2019-09-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多