Zuordnen einer NHibernate-Entität zu einer Abfrage

Ich habe eine Reihe von Beispielen dafür gesehen und soweit ich weiß, folgt meine HBM-Datei demselben Muster, aber es funktioniert nicht. Zunächst die Datei:

<?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" an sich funktioniert. Das heißt, wenn ich anrufe

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

Ich bekomme eine korrekte Liste vonDünne Luft Objekte.

Aber wenn ich versuche, eine Liste zu bekommenThinAirs so was:

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

Ich bekomme

Testmethode testThinAir hat eine Ausnahme ausgelöst: NHibernate.Exceptions.GenericADOException: Abfrage konnte nicht ausgeführt werdenDünne Luft diese_ ]

Meine Interpretation dieses Phänomens ist, dass NH meine ignoriert<loader> tag und versucht so, die Daten aus der zugrunde liegenden Tabelle zu laden, von der standardmäßig angenommen wird, dass sie benannt sindDünne Luft denn das ist der Name der Entitätsklasse, nur dortist nicht irgendeinDünne Luft Tabelle, daher die Fehlermeldung.

Ist diese Interpretation richtig? Und auf jeden Fall, was mache ich falsch und wie kann ich es richtig machen?

Danke im Voraus.

Michael

Antworten auf die Frage(1)

Ihre Antwort auf die Frage