2012-02-28 11 views
2

私の目標は、HQLでMSSQL Fulltext関数を使用することです。どのような場合には、私の "fulltext"関数をcontains関数にマッピングする特定のSQLFunctionを記述しました。Hibernate + MSSQL + Fulltext Contains経由での検索

しかし、問題は、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は、戻り値の型を必要とするので、これは、動作しません。

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

をそして、それはSQLとして生成されます:たとえば、これはHQLに解析するMS SQLでは動作しません

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

を。

私のアイデアはこれまでのところですが、何が、このセットアップでは可能ていないようだ。

  1. はミックスしようと
  2. (Hibernateが使用私のバージョンでこれをサポートしていません)戻り値のない解析機能を休止してくださいHQLとSQL(動作していないようです)

誰かが別のアイデアや助けを得ましたか?

私にHibernateのバージョンは3.2.6gaとMSSQLサーバーで2008

答えて

3

を助けるかもしれません。

代わりの

CONTAINS(a,b) 

を生成することが

CONTAINS(a,b) AND 1 

を生成し、HQLクエリ

fulltext(a,b) = true 

と一緒にそれはになります:

CONTAINS(a,b) AND 1 = 1 

これは機能します。

+1

ハックですが、動作するハックです:) –

関連する問題