Я использую следующий HQL для выбора компании, только если у нее есть сотрудники:
from Company as c
where c.companyKey = :companyKey
and exists (from Employee as e where e.companyKey = c.companyKey)
В SQL часть «существует ...» обычно записывается как «существует (выберите * из... "или" существует (выберите 1 из ... ". Сгенерированный в Hibernate SQL является" существует (выберите employee1_.company_key, employee1_.dept_key, ... "- перечислены все столбцы в ссылочной таблице.
Это приводит к "java.sql.SQLException: Неверный синтаксис рядом с ','". Я попытался выполнить сгенерированный SQL напрямую, и я подтвердил, что ошибка вызвана перечислением нескольких столбцов в подзапросе, используемом"Существует".
Я пытался указать один столбец в подзапросе HQL, но это, кажется, неверный синтаксис HQL (было бы полезно, если бы в документах Hibernate было полное определение HQL, скореенесколько смутных примеров о кошках). Я использую Hibernate 3.2.1 и Sybase ASE 11/12/15.
Кто-нибудь может предложить синтаксис HQL для решения этой проблемы? Очевидно, было бы просто использовать nativSQL, но я бы предпочел не загрязнять DAO несколькими стратегиями.