gpt4 book ai didi

mysql - Spring数据JPA与MySQL服务器: case is ignored on Entity class by default

转载 作者:行者123 更新时间:2023-11-29 09:55:02 26 4
gpt4 key购买 nike

我有以下实体类:

@Entity
@Table(name = "employee")
public class Employee {

@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
private long id;

@NotNull
@NaturalId
private String tagId;

@NotNull
@Size(max = 255, message = "Employee name can not be longer than 255 character")
private String name;

@Type(type = "yes_no")
private boolean isInside;

@PastOrPresent(message = "Last RFID timestamp can not be in the future")
private ZonedDateTime lastSwipe;

//Constuctors, getters and setters
}

使用以下 JpaRepository:

public interface EmployeeRepository extends JpaRepository<Employee, Long> {

Optional<Employee> findByTagId(String tagId);

}

假设数据库中有一名员工,其 tagId 为“SomeStringForID”。现在,如果我使用 findByTagId 方法查询数据库,例如 tagId 等于“sOmEStringforid”,则会在数据库中找到该员工。如果我尝试使用 tagId“sOmEStringforid”保存另一名员工,由于 @NaturalId 注释,我将收到异常。

知道是什么原因导致这种行为吗? Spring 命名查询有 IgnoreCase 选项,所以我很确定这不应该是默认行为。我也检查了我的一个旧项目,令我惊讶的是我发现了同样的行为。我尝试了 JDK 8 和 11 版本。

最佳答案

MySQL 不区分大小写。您可以使用值“a”查询记录,它可以返回记录“A”或“a”。

请参阅以下内容:

MySQL case insensitive select

MySQL case sensitive query

How can I make SQL case sensitive string comparison on MySQL?

关于mysql - Spring数据JPA与MySQL服务器: case is ignored on Entity class by default,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54005884/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com