In diesem Beispiel com.test.Cat
erweitert com.test.Animal
und es gibt kein Feld DB
in CAT
Tabelle von com.test.Cat
explizit seinen Typ definieren (es war ich nicht).JPA/Hibernate-Abfrage mit Klassenname?
Wenn ich meine Tiere von DB abfrage bekomme ich eine Sammlung von Tieren.
Es ist möglich, sie von Klassennamen zu sortieren:
order by r.class
aber ist es eine Möglichkeit, Klassennamen als Kriterium zu verwenden? Zum Beispiel möchte ich, dass alle Tiere Hunde erwarten. Aber kein Glück - auch dies nicht funktioniert:
where r.class = ? (String "ccc.test.Cat")
als ich eine Ausnahme erhalten:
Caused by: java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer
at org.hibernate.type.IntegerType.set(IntegerType.java:64)
at org.hibernate.type.NullableType.nullSafeSet(NullableType.java:154)
at org.hibernate.type.NullableType.nullSafeSet(NullableType.java:136)
at org.hibernate.param.PositionalParameterSpecification.bind(PositionalParameterSpecification.java:62)
at org.hibernate.loader.hql.QueryLoader.bindParameterValues(QueryLoader.java:514)
at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1589)
at org.hibernate.loader.Loader.doQuery(Loader.java:696)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:259)
at org.hibernate.loader.Loader.doList(Loader.java:2228)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2125)
at org.hibernate.loader.Loader.list(Loader.java:2120)
at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:401)
at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:361)
at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:196)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1148)
at org.hibernate.impl.QueryImpl.list(QueryImpl.java:102)
at org.hibernate.ejb.QueryImpl.getResultList(QueryImpl.java:67)
Können Sie die Klassen- und Tabellendefinitionen veröffentlichen? –