HQL字符串匹配完整的单词?

时间:2009-02-03 18:04:46

标签: hibernate hql

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

book.character like 'Sam'

我与“Sam Adams”不匹配。

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

book.character = 'Sam%'

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

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

2 个答案:

答案 0 :(得分:5)

由于HQL直接映射到SQL LIKE功能且LIKE功能不支持正则表达式,因此您必须具有创造性并执行以下操作:

book.character喜欢'Sam%'或book.character喜欢'%Sam'或book.character喜欢'%Sam%'或book.character ='Sam'

这可能不是确切的语法,但你明白了。如果你没有意识到,这个坏男孩的表现不会令人印象深刻。

答案 1 :(得分:1)

像Lucene这样的全文搜索引擎可以更好地处理这种类型的搜索。 Hibernate Search包含Lucene,因此在这种情况下是一个不错的选择。