В моей модели предметной области у меня есть абстрактный класс CommunicationChannelSpecification, у которого есть дочерние классы, такие как FTPChannelSpecification, EMailChannelSpecification и WebserviceChannelSpecification. Теперь я хочу создать HQL-запрос, содержащий предложение where, которое сужает результат до определенных типов спецификаций каналов. Например. (на простом английском языке) выберите все спецификации CommunicationChannelSpecification, типы которых встречаются в наборе {FTPChannelSpecification, WebserviceChannelSpecification}.
Как этого добиться в HQL? Я использую NHibernate 2.0.1 и таблицу для стратегии сопоставления наследования подклассов ...
Спасибо!
Паскаль





Не положительно в NHibernate, но в Hibernate есть два специальных свойства, на которые всегда ссылаются id и class. Итак, для вашего конкретного случая я бы сделал
from CommunicationChannelSpecifications spec where spec.class in (?)
В этом случае NHibernate поддерживает тот же синтаксис, что и Hibernate. См. Пример здесь.
хороший ответ, но что, если мы хотим сделать это в обновлении (hql). Я имею в виду обновление Entity, где class = com.pa.SubEntity?