【问题标题】:How to return boolean result from SQL count via JPQL如何通过 JPQL 从 SQL 计数返回布尔结果
【发布时间】:2019-03-12 18:45:54
【问题描述】:

我有一个简单的 sql 查询问题。我需要得到真假,我尝试了多种方法,但没有好的结果。此查询返回 0,因为我在数据库中的记录为零。也许应该调整条件。感谢所有的想法。

public boolean getAnalysisByUserId(final Integer userId) {
    Objects.requireNonNull(userId, "Integer userId cannot be null.");

    final Query query = this.manager.createQuery("select count(a) from AnalysisRequest a where" + " a.userId = :userId",
        AnalysisRequest.class);

    query.setParameter("userId", userId);

    if (query.getSingleResult().equals(0)) {
      return false;
    }
    return true;
  }

【问题讨论】:

  • getAnalysisByUserId() 的目的是什么?如果计数为零,它似乎应该返回false。也就是说,它看起来像预期的那样工作。你能更详细地解释你的问题吗?例如,一些预期的输入和输出是什么。
  • COUNT() 函数返回计数(一个数字)。它总是只返回一个整数值;最小值为零。

标签: java mysql jpql


【解决方案1】:

已解决,谢谢大家。

public boolean getAnalysisByUserId(final Integer userId) {
    Objects.requireNonNull(userId, "Integer userId cannot be null.");

final Query query = this.manager
    .createNativeQuery("select count(a.id) from AnalysisRequest a where a.userId = ?1");
query.setParameter(1, userId);

final Long result = (Long) query.getSingleResult();

return result != null && result > 0;
 }

【讨论】:

    猜你喜欢
    • 2015-06-29
    • 2012-08-16
    • 1970-01-01
    • 1970-01-01
    • 2021-10-21
    • 2022-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多