从空列返回实体后出现空指针异常
Posted
技术标签:
【中文标题】从空列返回实体后出现空指针异常【英文标题】:nullpointerexception after return entity from empty column 【发布时间】:2020-08-30 20:41:26 【问题描述】:我正在使用 Spring Boot 开发应用程序。我想从数据库中获取对象,但第一次该对象是空的。我这样做是因为我想限制每天只询问一次 DB。但是,当我返回 empy optiona(我尝试了该解决方案但不起作用)或 null 并提供应该“捕获”它的 if 语句时,我得到了空指针异常。有人知道如何解决吗?
public Statistics createSaveAndReturnStatistics()
User loggedUser = authService.getLoggedUser();
Statistics statistics = statisticsRepository.findFirstByUserIdOrderByIdDesc(loggedUser.getId());
ZonedDateTime creationDate = statistics.getCreationDate();
if (statistics == null || todayWasNotSavedStatistics(creationDate) )
//SOME CODE
return statisticsRepository.save(new Statistics());
return statistics;
private boolean todayWasNotSavedStatistics(ZonedDateTime creationDate)
ZonedDateTime now = ZonedDateTime.now(ZoneId.of("UTC"));
return creationDate.getDayOfYear() != now.getDayOfYear() &&
creationDate.getDayOfYear() <= now.getDayOfYear();
【问题讨论】:
【参考方案1】:我解决了这个问题。有两个问题。解决方案真的很简单,我忘了给Entity添加no args contructor。其次,正如 Eklavya 所说,在检查 null 之前调用 statistics.getCreationDate()。
【讨论】:
【参考方案2】:在 if 语句中检查 null 之前,您正在调用 statistics.getCreationDate()
。
可能这就是你得到 Nullpointerexception 的原因。
你可以这样在if语句中的todayWasNotSavedStatistics()
方法中直接发送statistics.getCreationDate()
if (statistics == null || todayWasNotSavedStatistics(statistics.getCreationDate()))
//SOME CODE
return statisticsRepository.save(new Statistics());
【讨论】:
以上是关于从空列返回实体后出现空指针异常的主要内容,如果未能解决你的问题,请参考以下文章