2

如何匹配休眠 HQL 查询中的完整单词?例如,假设在我们的数据库中有一个条目“Sam Adams”。现在,给定这个 HQL 片段:

book.character like 'Sam'

我不匹配“Sam Adams”。

但是,如果我将查询更改为:

book.character = 'Sam%'

然后我也匹配“萨曼莎”。但是,我不希望它与“Sam”这个词的变体相匹配;我只想匹配完整的单词“Sam”。

(并且,通过扩展,查询“Sam Adams”也可以匹配,因为这是两个完整的单词。)

4

2 回答 2

5

由于 HQL 直接映射到 SQL LIKE 功能,而 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 回答