2

休止状態の HQL クエリで完全な単語を一致させるにはどうすればよいですか? たとえば、データベースに「Sam Adams」というエントリがあるとします。さて、この HQL フラグメントを考えると:

book.character like 'Sam'

「サム・アダムス」には合いません。

ただし、クエリを次のように変更すると:

book.character = 'Sam%'

それから「サマンサ」も合わせます。しかし、それが「Sam」という単語のバリエーションに一致することは望ましくありません。完全な単語「Sam」でのみ一致させたい。

(さらに、これは 2 つの完全な単語であるため、'Sam Adams' というクエリも一致しても問題ありません。)

4

2 に答える 2

5

HQLはSQLLIKE機能に直接マップされ、LIKE機能は正規表現をサポートしていないため、創造性を発揮して次のようなことを行う必要があります。

book.character like'Sam%' OR book.character like'%Sam' OR book.character like'%Sam%' OR book.character ='Sam'

これは正確な構文ではないかもしれませんが、要点はわかります。そして、あなたが気づかなかったならば、この悪い男の子のパフォーマンスは何も印象的ではないでしょう。

于 2009-02-03T19:51:43.077 に答える
1

このタイプの検索は、Lucene のような全文検索エンジンで処理する方がはるかに優れています。Hibernate Search は Lucene をラップするため、この場合は適切なオプションです。

于 2012-03-30T05:50:29.983 に答える