Wie funktioniert ein CAST auf eine Klasse in HQL?

Antwort

In Hibernate Query Language (HQL) gibt es keine direkte Möglichkeit, ein Objekt auf eine bestimmte Klasse zu „casten“ wie in Java. HQL arbeitet mit Entitäten und deren Attributen, nicht mit Java-Casts. Das bedeutet, du kannst in einer HQL-Query nicht einfach ein Ergebnis auf eine andere Klasse casten. Was du aber machen kannst: 1. **Polymorphe Abfragen:** Wenn du eine Vererbungshierarchie hast, kannst du nach einer bestimmten Subklasse abfragen: ```java from Subklasse ``` Das gibt dir nur Instanzen dieser Subklasse zurück. 2. **Typauswahl mit `type()`** Du kannst mit der `type()`-Funktion nach dem Typ filtern: ```java from Superklasse s where type(s) = Subklasse ``` 3. **Konstruktor-Expressions:** Du kannst mit einer Konstruktor-Expression gezielt ein neues Objekt einer Klasse erzeugen: ```java select new pfad.zur.Klasse(a.feld1, a.feld2) from Entitaet a ``` Das ist kein Cast, sondern eine gezielte Instanziierung. **Fazit:** Ein direktes Cast wie `(Subklasse) objekt` in HQL gibt es nicht. Du kannst aber gezielt nach Subklassen abfragen oder mit Konstruktor-Expressions arbeiten. Weitere Infos findest du in der [Hibernate Doku](https://docs.jboss.org/hibernate/orm/current/userguide/html_single/Hibernate_User_Guide.html#hql). Falls du ein konkretes Beispiel hast, kann ich genauer darauf eingehen.

Kategorie: Programmierung Tags: HQL Cast Klasse
Neue Frage stellen

Verwandte Fragen

Kann man in VB.NET 2003 in einer Klasse Handler hinzufügen?

In VB.NET 2003 (also .NET Framework 1.1) kannst du in einer Klasse Event-Handler hinzufügen, allerdings gibt es einige Einschränkungen im Vergleich zu neueren .NET-Versionen. **So funktioni... [mehr]