Como mapear uma entidade NHibernate para uma consulta

Eu vi vários exemplos disso, e até onde posso dizer, o meu arquivo HBM segue o mesmo padrão, mas não está funcionando. Primeiro, o arquivo:

<?xml version="1.0" encoding="utf-8"?>
<hibernate-mapping default-cascade="save-update" xmlns="urn:nhibernate-mapping-2.2">
  <class name="ThinAir" mutable="false" lazy="true" >
    <id name="JobId">
      <generator class="native" />
    </id>
    <property name="UserLogin"/>
    <property name="UserEmail"/>
    <property name="DateProcessed"/>
    <loader query-ref="myquery"/>
  </class>
  <sql-query name="myquery">
    <return class="ThinAir">
      <return-property name="JobID" column="JobId"/>
      <return-property name="userLogin" column="UserLogin"/>
      <return-property name="DateProcessed" column="DateProcessed"/>
      <return-property name="userEmail" column="UserEmail"/>
    </return>
    <![CDATA[
    SELECT DISTINCT JobID,
    userLogin,
    DateProcessed,
    useremail
    FROM         dbo.someothertable
    ]]>
  </sql-query>
</hibernate-mapping>

"myquery" em-de-si, funciona. Isto é, se eu ligar

var x = session.GetNamedQuery("myquery").List();

Eu obtenho uma lista correta deThinAir objetos.

Mas, quando tento obter uma lista deThinAirs como isso:

var submissions = session.CreateCriteria<ThinAir>().List<ThinAir>();

eu recebo

Test testThinAir emitiu exceção: NHibernate.Exceptions.GenericADOException: não pôde executar a consulta [SELECT this_.JobId as JobId16_0_, this_.UserLogin as UserLogin16_0_, this_.UserEmail as UserEmail16_0_, this_.DateProcessed as DateProc4_16_0_ FROMThinAir isto_ ]

Minha interpretação desse fenômeno é que NH está ignorando minha<loader> tag e, assim, tentando carregar os dados da tabela subjacente, que, por padrão, assume ser nomeadoThinAir porque esse é o nome da classe de entidade, só existenão é qualquerThinAir tabela, daí a mensagem de erro.

Essa interpretação é correta? E em qualquer caso, o que estou fazendo de errado e como posso fazer certo?

Desde já, obrigado.

Michael

questionAnswers(1)

yourAnswerToTheQuestion