Java Spring引导查询选择,区分大小写

Java Spring引导查询选择,区分大小写,java,mysql,spring-boot,spring-data-jpa,Java,Mysql,Spring Boot,Spring Data Jpa,我必须在SpringBoot中使用LoginController来验证数据库中是否存在用户名和密码。为了验证,我创建了我的存储库,UserRepository,它扩展了Crudepository 当我将用户名和密码发送到存储库时,它们是正常发送的,但是当我进行查询时,它没有考虑参数的大小写敏感性 例如:在用户表中,我有username=“Test”和password=“Test” 如果我用username=“test”和password=“test”发出请求,似乎我在表中有这个用户名和密码,但我

我必须在SpringBoot中使用LoginController来验证数据库中是否存在用户名和密码。为了验证,我创建了我的存储库,UserRepository,它扩展了Crudepository

当我将用户名和密码发送到存储库时,它们是正常发送的,但是当我进行查询时,它没有考虑参数的大小写敏感性

例如:在用户表中,我有username=“Test”和password=“Test” 如果我用username=“test”和password=“test”发出请求,似乎我在表中有这个用户名和密码,但我没有

贝娄,我把一个和平的代码与我的查询,我将非常感谢,如果你能帮助我解决这个问题

谢谢你抽出时间

@Repository
public interface UserRepository extends CrudRepository<User, Long>{

User findByUsername(String username);

User findByEmail(String email);

@Query(value = "SELECT user_id FROM user WHERE username = :username AND password = :password", nativeQuery = true)
Long findUserIdByUsernameAndPassword(@Param("username") String username, @Param("password") String password);
@存储库
公共接口UserRepository扩展了Crudepository{
用户findByUsername(字符串用户名);
用户findByEmail(字符串电子邮件);
@查询(value=“从用户名=:用户名和密码=:密码的用户中选择用户\u id”,nativeQuery=true)
Long FindUserName和password(@Param(“用户名”)字符串用户名,@Param(“密码”)字符串密码);

}

我认为这些的默认值应该是区分大小写的,因为
IgnoreCase
是一个特殊的关键字
findByEmail
应区分大小写,但
findByEmailIgnoreCase
不区分大小写。您试图检查传递到函数中的值和DB上的值是否不相同?是的,我已验证。在邮递员中发出请求后,我打印用户名和密码,它们就可以了。从DB。。。。我做了一个查询,它返回一个特定用户id的用户名,并且返回得很好。您可能想看看类似的问题。根据MySQL数据库的创建方式,字符串在默认情况下可能不区分大小写。我尝试在不使用查询注释的情况下创建该方法,只是声明该方法,但我不能像现在这样只选择user_id。我必须将“Long findByUsernameAndPassword”更改为“User findByUsernameAndPassword”。这个问题必须在数据库级别解决,而不是在Spring级别。众所周知,MySQL是有问题的——当您可能希望区分大小写时,它会执行不区分大小写的比较。有一些可能对您有用的信息。