【发布时间】: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