Моя цель - использовать полнотекстовую функцию MSSQL с HQL. Для какого случая я написал особую функцию SQLFunction, сопоставляющую мою функцию «fulltext» с функцией 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 без возвращаемого значения (Hibernate не поддерживает это в моей используемой версии)
- Попытка смешать HQL и SQL (также, похоже, не работает)
Кто-нибудь получил другую идею или помощь?
Используется моя версия Hibernate 3.2.6ga и MSSQL Server 2008.