Spring Data JPA查询结果为空时遇到的问题
遇到的问题
在使用Repository接口时遇到了若findBy方法的查询结果为空时会报空指针异常java.lang.NullPointerException
,而查询结果不为空时可以通过测试。
解决方法
在网上搜索到的使用Repository报空指针异常的原因多是因为注入的问题,没有使用@Autowired
,但这并不适用于我遇到的问题。
在确定位置后,发现我的报错出现在findBy方法。最后在官方文档中查到对于Repository中的方法需要专门处理结果为空时的情况。若使结果可为空,需要在方法前加@Nullable
注解。
所以只需将
interface UserRepository extends Repository<User, Long> {
User findByName(String name);
}
改为
interface UserRepository extends Repository<User, Long> {
@Nullable
User findByName(String name);
}
即可。
本文首发于我的个人博客wangchucheng.com。
原文链接:https://wangchucheng.com/zh/posts/empty-result-in-spring-data-jpa/
本博客文章除特别声明外均为原创,采用CC BY-NC-SA 4.0 许可协议进行许可。超出CC BY-NC-SA 4.0 许可协议的使用请联系作者获得授权。