Hibernate Projection

Verjigorm

Top Contributor
Hallo,

da ich bisher noch nie wirklich mit Criterias etc. gearbeitet habe, betrete ich hier etwas "Neuland".
Ich habe folgende funktionierende Abfrage:

Java:
SystemDefault system = (SystemDefault) s
				.createCriteria(SystemDefault.class)
				.add(Restrictions.eq("pk.id", module))
				.add(Restrictions.eq("para", para))
				.uniqueResult();

Jetzt wollte ich die Rückgabe noch mit Projections einschränken, da ich nur 3 der insgesamt 28 Spalten brauche. Dachte da an sowas:

Java:
SystemDefault system = (SystemDefault) s
				.createCriteria(SystemDefault.class)
				.add(Restrictions.eq("pk.id", module))
				.add(Restrictions.eq("para", para))
				.setProjection(Projections.projectionList()
						.add(Projections.property("type"))
						.add(Projections.property("value"))
						.add(Projections.property("description")))
				.uniqueResult();

Naja und kriege dann eineException:
Java:
[Ljava.lang.Object; cannot be cast to com.system.settings.persistence.SystemDefault

Ich hätte jetzt erwartet, dass ich ein Objekt vom Typ 'SystemDefault' zurückbekomme mit nur jenen ausgewählten Werten.
Mache ich da irgendwas falsch oder funktioniert dies so garnicht? Oder funktioniert das irgendwie?

mfg Verjigorm
 
wenn du nur einzelne Spalten abfragst bzw. alles andere als exakt ein gemapptes Objekt, dann kommt ein Object[] raus, soweit korrekt,

in HQL gibt es die Möglichkeit, einen Konstruktor aufzurufen, ob von SystemDefault oder einer anderen Ergebnisklasse:
select new package.Klassenname(x.a, x.b, x.c) from X x ..
 

Zurück
Oben