Hallo, habe meine Criteria in ein HQL-query umgewandelt und die Probleme scheinen auf den ersten Blick beseitigt.
Code:
final Query q = s
.createQuery("from CountryModel cm where cm.name = :name and cm.year = :year and cm.type = :type and cm.comment = :comment");
q.setString("name", pk.getName().name());
q.setInteger("year", pk.getYear());
q.setString("type", pk.getType().name());
q.setString("comment", pk.getComment());
final Object loadedCountry = q.uniqueResult();
Verstehe nur nicht warum?
Bevorzuge eigentlich Criteria, da mehr zur Compiletime geprüft wird und daher weniger fehleranfällig ist. Habe allerdings auch gelesen, dass Criteria noch bei weitem nicht so gut implementiert sein soll, wie HQL.
Die erzeugte Abfrage ist leider zu lang zum posten (ausgedruckt !113! Seiten zu 18), es scheint jedoch als würde HQL keine einzige große Abfrage starten, sondern mehrere kleinere.
Stimmt dies?
Seltsam ist, dass auch get sich ähnlich verhält wie die Criteria-Abfrage. In einer naiven Abfrage, ob ein Objekt bereits in der DB ist oder nicht, hatte ich dies dummerweise versucht, dies anstatt eines einfachen HQL-Query (mit slecet auf ein key-atrribut) zu benutzen. Vor allem im Zusammenhang mit Eager-Fetching, ist dies nicht zu empfehlen.
Vielen Dank.
Viele Grüße Michael