我在客户表上设置了全文索引,以便能够通过他们的信息快速搜索客户。
我必须创建一个自定义的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函数的任何建议吗?
答案 0 :(得分:0)
只需使用Hibernates条件API和sqlRestriction,然后您就可以将任何字符串传递给您想要的查询。例如。 searchValue = myCust * etc ......
Restrictions.sqlRestriction(" CONTAINS(name, ?)", searchValue, StandardBasicTypes.STRING)