如何解决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 举报,一经查实,本站将立刻删除。