我想从一列中计算平均值,但我得到的是NPE。
通过以下方式:
@Query(value = "SELECT avg(mood) FROM Mood WHERE date = :date")
Double getAvgMoodByDate(@Param("date")LocalDate date);我得到了:
Caused by: java.lang.IllegalArgumentException: Validation failed for query for method public abstract java.lang.Double
....
Caused by: java.lang.NullPointerException: null然后我创建了我自己的@Repository实现
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();
}这种方法也会导致
java.lang.NullPointerException: null你能告诉我我哪里可能错了吗。
发布于 2017-10-25 17:54:39
问题似乎是当您使用Mood.date时,所以使用别名FROM Mood m时,也尝试像这样使用coalesce:
@Query(value = "SELECT coalesce(avg(m.mood), 0) FROM Mood m WHERE m.date = :date")https://stackoverflow.com/questions/46938785
复制相似问题