【发布时间】:2020-03-19 12:41:50
【问题描述】:
我正在尝试在具有 Spring Data JPA 的 Spring Boot 2 项目中,在扩展 JpaRepository 的存储库中进行区分大小写查询。
假设如果我不使用IgnoreCase,查询应该区分大小写,但它不会发生。
片段:
log.info("Received name: " + name);
Player player = playerRepository.findByName(name).orElseThrow(()-> new NonExistingPlayerNameException(name));
log.info("Repository player name: " + player.getName());
控制台结果:
2020-03-19 13:05:02.831 INFO 13739 [...].controllers.PlayerController : Received name: peter
2020-03-19 13:05:02.884 INFO 13739 [...].controllers.PlayerController : Repository player name: Peter
如您所见,查询不区分大小写,但我希望它区分大小写。
我做错了吗?如何使查询区分大小写?
作为一种解决方法,我可以在收到对象后进行检查并采取相应措施,但我希望查询区分大小写。
提前致谢,
卡洛斯。
编辑:
感谢您的回答,并对错过的信息感到抱歉。
我在 Ubuntu 桌面 19.10 中使用 MySQL 数据库(mysql Ver 8.0.19-0ubuntu0.19.10.3 for Linux on x86_64 ((Ubuntu)))。
很抱歉,我不知道如何记录实际执行的查询。
我可以看到数据库允许我保存一个大写和小写的寄存器,我可以有一个字段名称为“Peter”的行和另一个名称为“peter”的行。我的意思是,数据库似乎并没有改变数据来存储它。
我会看看关于MSSQL Server的答案。
谢谢你,
卡洛斯。
【问题讨论】:
-
您使用的持久存储是什么?忽略大小写取决于持久性存储。 reference
-
您也可以记录实际执行的查询
-
查询是否区分大小写取决于您的数据库,有时甚至取决于您的数据库和操作系统的组合。请在您的问题中说明您使用的是哪个数据库。
标签: spring spring-boot spring-data-jpa