通过Contains进行Hibernate + MSSQL +全文搜索

时间:2012-02-28 19:04:37

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

我的目标是使用带有HQL的MSSQL全文功能。在什么情况下我写了一个特定的SQLFunction将我的“全文”函数映射到包含函数。

然而,问题是在HQL中(似乎)我必须明确使用返回类型,MSSQL包含的函数不使用或接受。

这是它在MSSQL中的工作原理:

select distinct id from content c where CONTAINS(c.content, 'p')

这是我在HQL中使用它的想法:

select id from Content c  where fulltext(c.content, 'p') 

这不起作用,因为HQL需要返回类型。例如,这将在HQL中解析:

select id from Content c  where fulltext(c.content, 'p') = true

它将生成为SQL:

select distinct id from content c where CONTAINS(c.content, 'p') = 1

在MS SQL中不起作用。

我的想法到目前为止,但在此设置中似乎不可能:

  1. 使hibernate解析函数没有返回值(Hibernate在我的版本中不支持这个)
  2. 尝试混合使用HQL和SQL(似乎也不起作用)
  3. 任何人都有另外的想法或帮助吗?

    我使用的Hibernate版本是3.2.6ga和MSSQL Server 2008。

2 个答案:

答案 0 :(得分:3)

我找到了一种对我有用的方法。

而不是生成

CONTAINS(a,b) 

它会生成

CONTAINS(a,b) AND 1

与HQL查询一起

fulltext(a,b) = true

这将导致:

CONTAINS(a,b) AND 1 = 1 

它有效。

答案 1 :(得分:1)

Native Query可能有帮助