Hibernate Criteria Restrictions.eq不区分大小写

时间:2017-05-02 06:51:49

标签: java hibernate criteria case-insensitive restrictions

我正在使用条件来检查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();
}

1 个答案:

答案 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 =重音敏感。