Hibernate + MSSQL +全文搜索通过包含SQLFunctionTemplate

时间:2016-06-10 14:40:21

标签: sql-server hibernate full-text-search

我在客户表上设置了全文索引,以便能够通过他们的信息快速搜索客户。

我必须创建一个自定义的hibernate方言来简化映射。 并做一些时髦的东西让hibernate工作 Hibernate + MSSQL + Fulltext Search via Contains

我的自定义方言有一个看起来像这样的功能

registerFunction("contains", new SQLFunctionTemplate(StandardBasicTypes.BOOLEAN, "CONTAINS(?1, ?2) AND 1"));

这使得可以进行如下查询

from Customer c where contains(c.name, :term) = true

我现在的问题是,为了能够返回我需要引用该术语的parial匹配并添加*

因此原始查询将是

select * from customer c where CONTAINS(c.name, '"mycust*"');

我尝试用引号和星号包装SQLFunctionTemplate,并尝试在呼叫站点引用,但都不起作用。

有关如何创建执行上述原始查询的sql函数的任何建议吗?

1 个答案:

答案 0 :(得分:0)

只需使用Hibernates条件API和sqlRestriction,然后您就可以将任何字符串传递给您想要的查询。例如。 searchValue = myCust * etc ......

   Restrictions.sqlRestriction(" CONTAINS(name, ?)", searchValue, StandardBasicTypes.STRING)