我正在使用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
1条答案
按热度按时间q5iwbnjs1#
如果需要utf8字段区分大小写的排序规则,则应该使用
utf8_bin
. 您可以扩展mysql方言来实现这一点。看看这里。