首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SpringData Avg NullPointerException

SpringData Avg NullPointerException
EN

Stack Overflow用户
提问于 2017-10-25 17:39:20
回答 1查看 175关注 0票数 1

我想从一列中计算平均值,但我得到的是NPE。

通过以下方式:

代码语言:javascript
复制
@Query(value = "SELECT avg(mood) FROM Mood WHERE date = :date")
Double getAvgMoodByDate(@Param("date")LocalDate date);

我得到了:

代码语言:javascript
复制
Caused by: java.lang.IllegalArgumentException: Validation failed for query for method public abstract java.lang.Double
....
Caused by: java.lang.NullPointerException: null

然后我创建了我自己的@Repository实现

代码语言:javascript
复制
public Double avgByDate(LocalDate date) {
  return (Double) entityManager.createQuery("SELECT avg(Mood.mood) FROM Mood WHERE Mood.date = :date")
          .setParameter("date", Date.valueOf(date))
          .getSingleResult();
}

这种方法也会导致

代码语言:javascript
复制
java.lang.NullPointerException: null

你能告诉我我哪里可能错了吗。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-25 17:54:39

问题似乎是当您使用Mood.date时,所以使用别名FROM Mood m时,也尝试像这样使用coalesce

代码语言:javascript
复制
@Query(value = "SELECT coalesce(avg(m.mood), 0) FROM Mood m WHERE m.date = :date")
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46938785

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档