Spring Data JPA查询结果为空时遇到的问题

2019-05-26
1分钟阅读时长

遇到的问题

在使用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 许可协议的使用请联系作者获得授权。

Avatar

WANG Chucheng

说学逗唱样样不精的地道天津人。