如何匹配hibernate HQL查询中的完整单词? 例如,想象一下在我们的数据库中我们有一个条目“Sam Adams”。 现在,给定这个HQL片段:
book.character like 'Sam'
我与“Sam Adams”不匹配。
但是,如果我将查询更改为:
book.character = 'Sam%'
然后我也匹配“萨曼莎”。但是,我不希望这与“Sam”这个词的变体相匹配;我只想匹配完整的单词“Sam”。
(而且,通过扩展,查询'Sam Adams'也可以匹配,因为这是两个完整的单词。)
答案 0 :(得分:5)
由于HQL直接映射到SQL LIKE功能且LIKE功能不支持正则表达式,因此您必须具有创造性并执行以下操作:
book.character喜欢'Sam%'或book.character喜欢'%Sam'或book.character喜欢'%Sam%'或book.character ='Sam'
这可能不是确切的语法,但你明白了。如果你没有意识到,这个坏男孩的表现不会令人印象深刻。
答案 1 :(得分:1)
像Lucene这样的全文搜索引擎可以更好地处理这种类型的搜索。 Hibernate Search包含Lucene,因此在这种情况下是一个不错的选择。