ClientsRepository类
public interface ClientsRepository extends JpaRepository<ClientsEntity, Long> {
boolean existsByClientId(String clientId);
}ClientsEntity类
@Getter
@Setter
@NoArgsConstructor
@Entity
@Table(name = "clients")
public class ClientsEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
private String clientId;
}客户表
| id | client_id | |---------------------|------------------| | 1 | ABC | |---------------------|------------------|
当调用existsByClientId("abc")返回true时,我如何强制检查大小写?
实际结果:
existsByClientId("abc") --> true
existsByClientId("ABC") --> true
预期结果:
existsByClientId("abc") --> false
existsByClientId("ABC") --> true
Java版本8 Spring引导版本2.1.2 version mysql连接器-java版本5.1.46
发布于 2019-12-16 13:09:13
默认情况下,派生的SQL查询区分大小写。然而,正如文档中所说的
方法解析器支持为单个属性设置IgnoreCase标志(例如,findByLastnameIgnoreCase(…))或者对于支持忽略大小写的类型的所有属性(通常是字符串实例findByLastnameAndFirstnameAllIgnoreCase(…))。是否支持忽略案例可能因存储而异,因此请参阅参考文档中的相关章节,以获得特定于存储的查询方法。
由于我们使用的是MySQL数据库,大小写敏感性取决于服务器、数据库和连接排序规则,而( ci)不区分大小写,因此比较大小写不敏感。与其他数据库比较时,创建意外结果。
从MySQL大小写不敏感选择的解决方案来看,将列排序规则更改为区分大小写是最简单的,不需要更改代码。
https://stackoverflow.com/questions/59350598
复制相似问题