java - 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
我之前提到的。
推荐阅读
- session-cookies - 要存储会话数据,使用没有 max-age 的 cookie 与使用会话存储有什么区别?
- sql - 仅查询最后 n 个分区
- java - 同时调用两个不同的端点在 Spring Boot 中返回相同的数据
- java - 触发N个事件后,重启客户端。之前触发的事件会依次触发
- postgresql - 当其中一个表仅缺少一列时,如何在 postgresql 中合并两个表?
- google-bigquery - 用权重平均向量
- javascript - 有没有更好的方法来检查 Jquery ui selectable 中的选定项目?
- docker - 自定义指标未在普罗米修斯中公开
- laravel - Laravel 从 admin 向特定用户发出备注通知
- vba - 为 Powerpoint 的每张幻灯片自动生成文本框中的文本