微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

TokenEndpoint 中的 NullPointerException

如何解决TokenEndpoint 中的 NullPointerException

LE:我最初认为这与 JPQL 查询有关 - 请参见下文。

我遇到了一个问题,但似乎找不到任何解决方案。我正在尝试在数据库中查找用户搜索条件是用户名或电子邮件地址。用户可能没有用户名,所以我总是在我的 NullPointerException 中得到一个 CrudRepository。我尝试过 JPQL 和本机查询,但我总是得到相同的结果。

我可以在 MysqL Workbench 中成功运行本机查询 - 在 Java 中它会引发异常。

这是我使用本机查询时的存储库:

@Query(value = "select * from users u where " +
        "(u.username is not null and u.username = :queryString) or " +
        "(u.email_address is not null and u.email_address = :queryString)",nativeQuery = true)
Optional<User> findByEmailAddressOrUsername(@Param("queryString") String queryString);

使用 JPQL:

@Query("select u from user u where " +
        "(u.emailAddress is not null and u.emailAddress = ?1) or " +
        "(u.username is not null and u.username = ?1)")
Optional<User> findByEmailAddressOrUsername(String queryString);

有什么建议吗?

非常感谢。

解决方法

嗯,看来我终于找到了问题所在。这比我预期的要微妙得多。它与 JPQL 或 SQL 查询无关,它们非常好。问题实际上出在我的自定义 TokenEnhancer 中,我检查了 UserDetails。由于 getUsername() 返回 null(因为有些用户没有用户名,这会触发我之前提到的 NullPointerException

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。