Использование класса в условии where HQL-Query

У меня есть контакт юридического лица, у которого есть три соединенных подкласса (Лицо, Компания, Филиал). Когда я делаю запрос на выборку в Контакте, где я должен получить только информацию о Человеке, Компании или Филиале, я могу сделать

выберите из Контакт a, где a.class = Персона

это работает правильно в случае человека и филиала. Но потому что Branch сам ссылается на Company (с CompanyId), а когда я делаю сейчас

выберите из Контакт a, где a.class = Компания

он заменит Компанию на CompanyId (от Филиала).

У кого-нибудь есть идея, как я могу предотвратить замену значения класса HQL реальным столбцом в HQL?

1 ответ

Решение

Попробуйте использовать полное имя класса (включая пространство имен):

select from Contact a where a.class = Your.Namespace.Company

Это должно помочь NHibernate отличать имя класса от имени свойства.

Другие вопросы по тегам