Ho una gerarchia di classi complesse con più livelli di ereditarietà e ho bisogno di eseguire query per determinati tipi specifici all'interno di tale gerarchia, utilizzando HQL.Query HQL per più tipi/classi
Diciamo che ho classi Cat, Dog e Monkey, con un animale di classe base comune.
Come si scrive una query che seleziona solo alcune di quelle, diciamo, Cat and Dog?
Devo anche ordinare o filtrare in base a determinate proprietà degli animali - quindi diciamo, gli animali con Sesso = "Maschio" e l'ordine per nome.
È possibile?
secondo la [NH knol] (http://knol.google.com/k/nibernate-chapter-12-hql-the-hibernate-query-language) di Fabio Maulo, "la classe di proprietà speciale accede al valore discriminatore di un'istanza nel caso di persistenza polimorfica. Un nome di classe Java incorporato nella clausola where essere tradotto al suo valore discriminatore. " - Quindi sembra che sia supportato. Ci proverò domani mattina e posterò il risultato qui, grazie! –
La proprietà .class magica funziona alla grande con HQL in NH! Come avvertimento, l'API Criteri non è altrettanto utile: ha richiesto un orribile work-around, recuperando manualmente il discriminatore dal mapping, poiché l'API Criteria non traduce i nomi delle classi in valori discriminatori, ma si aspetta che tu conosca il discriminatore valore in anticipo. Roba terribile Ma con HQL funziona alla grande! –