我正在使用条件来检查json中的用户名和密码是否正确。我确信输入的用户名和密码是正确的,但即使字母大小写不同,它总是会返回我的对象。
public Admin getLoggedAdminInformation(String username, String password){
Criteria criteria = criteria()
.add(Restrictions.eq("userName", username))
.add(Restrictions.eq("password", password));
return (Admin) criteria.uniqueResult();
}
答案 0 :(得分:1)
Restrictions.eq
只返回SimpleExpression
对象,ignoreCase
为false。
因此,它将使用您提供的完全相同的值创建SQL。
public static SimpleExpression eq(String propertyName, Object value) {
return new SimpleExpression(propertyName, value, "=");
}
因此,这种不区分大小写的比较是数据库的行为。它取决于数据库服务器或表或列配置。
Ex:在MS SQL服务器中,这是基于数据库的排序规则,可以在表级别或列级别中过度使用。 样本排序规则名称为Latin1_General_CI_AS,此处CI =不区分大小写,AS =重音敏感。