jpa-mysql字符编码区分大小写

edqdpe6u  于 2021-07-23  发布在  Java
关注(0)|答案(1)|浏览(461)

我正在使用jpa存储库并指定 findByEmail(email) 方法。当我调用这个方法时,它工作得很好,唯一的问题是我希望它区分大小写。所以noemail@noemail“不匹配”noemail@noemail.com". 当“findbyemail(email)”方法返回true时,不会发生这种情况。
当我查看mysql数据库表时,我看到实体类中作为字符串列出的每个字段的字符集都是“utf8md4”。通过一些阅读,它看起来像区分大小写与utf-8的变化,如“utf8md4\u 0900\u as\u cs”,不知道如何改变这种情况下,如果是这样的。
当大小写不匹配时,如何更改以确保findbyemail(email)方法返回false?

@Entity
@Table(name="users", uniqueConstraints={@UniqueConstraint(columnNames="username"})})
@Data
public class user{

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @NotBlank(message = "Can't be blank")
    @Size(max = 250, message = "Can't exceed 60 characters")
    @Email
    private String email;

    public user() {}

    public user(String email) {
        this.email = email;
    }
}
@Repository
public interface UserRepository extends JpaRepository<user, Long> {
    List<user> findByEmail(String email);
}
@PostMapping("/v1/endpoint")
public ResponseEntity<?> forgotusername(@RequestBody String email){
    List<user> users = userRepository.findByEmail(email);
    return new ResponseEntity<>(users, HttpStatus.OK);
}
spring.datasource.url=jdbc:mysql://${MYSQL_HOST:AWS?useUnicode=true&characterEncoding=UTF-8

spring.datasource.username=username
spring.datasource.password=password
q5iwbnjs

q5iwbnjs1#

如果需要utf8字段区分大小写的排序规则,则应该使用 utf8_bin . 您可以扩展mysql方言来实现这一点。看看这里。

相关问题