【问题标题】:Hibernate + MSSQL + Fulltext Search via ContainsHibernate + MSSQL + 通过包含全文搜索
【发布时间】:2012-03-18 06:54:47
【问题描述】:

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

但是,问题在于,在 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 中不起作用。

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

  1. 制作没有返回值的休眠解析函数(在我使用的版本中休眠不支持此功能)
  2. 尝试混合使用 HQL 和 SQL(似乎也不起作用)

有人有其他想法或帮助吗?

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

【问题讨论】:

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


    【解决方案1】:

    我找到了一种适合我的方法。

    而不是生成

    CONTAINS(a,b) 
    

    它会生成

    CONTAINS(a,b) AND 1
    

    并结合 HQL 查询

    fulltext(a,b) = true
    

    这将导致:

    CONTAINS(a,b) AND 1 = 1 
    

    而且它有效。

    【讨论】:

    • 您能否提供一个更清晰的示例,说明您更改/用于完成这项工作的内容。谢谢
    • 实际上,我设法在这些更改之后完成了这项工作。谢谢
    【解决方案2】:

    Native Query 可能会有所帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-16
      • 1970-01-01
      • 2016-02-14
      相关资源
      最近更新 更多