【问题标题】:Java ee 7 query.getResultList is nullJava ee 7 query.getResultList 为空
【发布时间】:2014-04-06 10:16:40
【问题描述】:

我总是得到一个空指针异常,因为结果列表是空的而不是空的。我以为“问题”已经解决了?

    Query query = em.createNamedQuery("findMaxTranslationId");
    query.setMaxResults(1);
    List<Long> results = query.getResultList();
    System.out.print(results); //Output = [null]
    Long translationId = 1L;
    if (!results.isEmpty()) {
        translationId = results.get(0); //null pointer exception
    }
    return translationId;

查询:

    SELECT MAX(t.translationId) FROM Translation t

我还手动测试了查询,它正在工作。

【问题讨论】:

  • 输出表明列表不为空。它包含一个元素,该元素为空。 NPE 可能不会发生在你所说的发生的地方。如果列表为空,您将在 if 语句的行中获取它。发布完整的堆栈跟踪以确认。
  • 好的,我如何检查列表是否“几乎”为空?
  • if (results.get(0) != null) translationId = results.get(0);
  • 谢谢!但是为什么查询返回null呢?
  • 因为你的表中根本没有翻译。

标签: jpql glassfish-4 java-ee-7


【解决方案1】:

如果没有要比较的行,SQL 函数“max”将返回 null!所以会有一个包含一个返回 null 对象的列表。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-31
    相关资源
    最近更新 更多