我的目标是将MSSQL全文功能与HQL一起使用。在哪种情况下,我编写了一个特定的SQLFunction,将我的“全文”函数映射到contains函数。
但是,问题在于,在HQL中(似乎)我必须明确使用返回类型,MSSQL Contains函数不使用或不接受该返回类型。
这就是它在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中不起作用。
到目前为止,我的想法是,但是在这种设置下似乎是不可能的:
有人有其他想法或帮助吗?
我使用的Hibernate版本是3.2.6ga和MSSQL Server 2008。
我找到了一种对我有用的方法。
而不是产生
CONTAINS(a,b)
它会产生
CONTAINS(a,b) AND 1
并结合HQL查询
fulltext(a,b) = true
它将导致:
CONTAINS(a,b) AND 1 = 1
而且有效。