2009-07-07 3 views
2

Können sagen, ich habe zwei Tabellen - „Katze“ und „Cat Besitzer“, die mit vielen zu eins so ähnlich verlinkt sind:Hibernate: Sortierung durch ein Feld aus einer verknüpften Tabelle, wenn Fremdschlüssel null ist

<class name="com.example.Cat" table="cat"> 
     ... 
     <many-to-one name="owner" 
      class="com.example.CatOwner" 
      column="owner_id" 
      not-null="false" insert="true" update="true" cascade="none" lazy="false"/> 
</class> 

Jetzt möchte ich eine Liste aller Katzen mit Katzenbesitzer Namen, wie diese sortiert bekommen:

session.createQuery("from Cat cat order by cat.owner.name"); 

Das Problem ist, wenn eine Katze nicht einen Besitzer hat (owner_id = NULL), die Katze gewonnen‘ t mit dieser Abfrage ausgewählt werden. Wie kann ich Katzen ohne Besitzer in das Ergebnis einbringen?

Danke.

Antwort

0

Im Standard-SQL ist es ein typisches Beispiel für eine OUTER JOIN, so dass die schnelle Antwort versucht, die Abfrage wie zu schreiben:

session.createQuery("select cat from Cat cat, CatOwner cato WHERE cato.id(+) = cat.ownerId order by cato.name NULLS LAST"); 

HINWEIS: Ich habe das geschrieben Code nicht getestet haben! NOTE2: Ich nehme an, dass Oracle RDBMS und hibernate.properties richtig konfiguriert sind.

+0

Sorry, ich vergaß zu erwähnen, dass es in mysql ist ... – serg

Verwandte Themen