我的目标是使用带有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中不起作用。
我的想法到目前为止,但在此设置中似乎不可能:
任何人都有另外的想法或帮助吗?
我使用的Hibernate版本是3.2.6ga和MSSQL Server 2008。
答案 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可能有帮助