3

LIKE %Hibernateでの使用方法。ファイルで SQL を使用したいと考えてLIKE %hbm.xmlます。2 つのクエリを 1 つに統合しています。

クエリは次のようになります。

select * from PAY_GROUP_VW where CASE_SID=? AND CASE_TLE like %?%

私も試し%?%ました。like句なし%で使用しましたが、機能します。しかし、うまくいき%ません。

ラップされた例外:

org.springframework.dao.InvalidDataAccessResourceUsageException: could not execute query; nested exception is org.hibernate.exception.SQLGrammarException: could not execute query
    at org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:630)
    at org.springframework.orm.hibernate3.HibernateAccessor.convertHibernateAccessException(HibernateAccessor.java:412)
    at org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:424)
    at org.springframework.orm.hibernate3.HibernateTemplate.executeFind(HibernateTemplate.java:343)

これは私がパラメータを渡す方法です:

q.setParameter(0, csId);
q.setParameter(1, csTle);
return q.list();

%||のように試してみました ?次の例外が発生しました。

org.springframework.dao.InvalidDataAccessResourceUsageException: could not execute query; nested exception is org.hibernate.exception.SQLGrammarException: could not execute query
    at org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:630)
    at org.springframework.orm.hibernate3.HibernateAccessor.convertHibernateAccessException(HibernateAccessor.java:412)
    at org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:424)
    at org.springframework.orm.hibernate3.HibernateTemplate.executeFind(HibernateTemplate.java:343)
4

3 に答える 3

3

LIKE '%?%'および 2 番目のパラメーター文字列を使用して、クエリを作成します。likeは文字列の比較に使用されるため、フィールドも文字列型である必要があります。

于 2013-03-12T18:25:23.470 に答える
2

たぶん、user_id は char/varchar ではありませんか? 最初に str() で user_id を文字データに変換する必要があります!

例:

SELECT *
FROM abc.def_vw a
WHERE user_id = ?
AND str(user_id) LIKE '%' || ?
于 2013-03-12T18:24:37.357 に答える
0

3 つの注意点:

  • user_id は文字列ですか?
  • HQL のように正常に動作します。たとえば、「%something%」のように
  • あなたのクエリは意味がありません "where user_id =? and user_id like '%'" 何をしようとしていますか? 条件の 1 つだけを使用します。
于 2013-03-13T02:09:10.403 に答える