2017-05-02 2 views
0

jsonのユーザー名とパスワードが正しいかどうかを判断する基準を使用しています。入力ユーザー名とパスワードは正しいと確信していますが、文字の大文字と小文字が異なる場合でも常にオブジェクトを返します。Hibernate Criteria Restrictions.eqは大文字と小文字を区別しません

public Admin getLoggedAdminInformation(String username, String password){ 

    Criteria criteria = criteria() 
      .add(Restrictions.eq("userName", username)) 
      .add(Restrictions.eq("password", password)); 

    return (Admin) criteria.uniqueResult(); 
} 
+3

データベースのSQLコンソールで直接クエリをテストしましたか? (どのデータベースで、どのようなSQL列型ですか?)あなたのデータベースは、比較時に大文字と小文字を区別しないことがあります。 – Thierry

答えて

0

Restrictions.eqだけignoreCaseSimpleExpressionオブジェクトがfalseを返します。 これで、指定した値とまったく同じ値のSQLが作成されます。

public static SimpleExpression eq(String propertyName, Object value) { 
     return new SimpleExpression(propertyName, value, "="); 
    } 

大文字と小文字を区別しない比較は、データベースの動作です。それはデータベースサーバーまたはテーブルまたは列の構成に依存します。

例:MS SQLサーバーでは、これはデータベースの照合順序に基づいており、テーブルレベルまたは列レベルでオーバーライドすることができます。 サンプル照合名はLatin1_General_CI_ASです(ここではCI =大文字小文字を区別しません)。

+0

ありがとう、私の問題を解決:) –

関連する問題