0

私は現在ユーザー定義の検索を作成しています。私の問題は、通常のsql(データベースで実行)の場合は結果を返しますが、HQLの場合は結果を返さないことです。

例。このクエリはSQLで作成しました。

SELECT * FROM USER_PROFILES WHERE FIRST_NAME LIKE '%somevalue existinDb%';

ただし、HQLクエリオブジェクトでは値が返されます

  String someValue = "somevalue existinDb"
    String temp_name = "%" +someValue + "%";
            System.out.println(temp_name);
            Query query =  sess().createQuery(
                    "from UserProfile where firstName  LIKE :temp_name").setParameter("temp_name",temp_name);

ただし、HQLQUeryオブジェクトはSQLクエリと同じ結果をレンダリングしません。なんでそんなの?

4

4 に答える 4

0

これを試して :

sess()。createQuery( "from UserProfile where firstName LIKE:temp_name")。setParameter( "temp_name"、'%' + someValue +'%');

そして、はるかに単純なメソッド:String someValue = "somevalue presentinDb" String temp_name = "%" + someValue + "%"; クエリquery=session.createQuery( "from UserProfile where firstName LIKE?"); query.setString(0、temp_name);

于 2013-01-24T11:48:23.863 に答える
0

このようなクエリにはHibernateSearchを使用する必要があります。より効率的で結果との一致がはるかに優れているため、よりユーザーフレンドリーなアプリケーションになります。

于 2013-01-25T22:25:49.443 に答える
0

"/%"代わりに使用する必要があります"%"

于 2014-01-08T03:13:02.047 に答える
0
String temp_name = "%'" +someValue + "'%";

あなたのために働くでしょう。以前も同じ問題がありました。うまくいかない場合は、%s を試してみてください。%パラメータの前にa を入れるとうまくいかないと思います。

%記号を使用して、パターンの前後にワイルドカード (パターン内の欠落文字) を定義できます。したがって、文字列の前に置く%と、 の前に欠けている文字列を探していますsomeValue

于 2013-01-24T11:22:57.157 に答える