2012-06-28 2 views
7

Ich habe einen querystring entlang der Linien von:Hibernate - kann ich die Namen und Positionsparameter mischen?

session.createSQLQuery("SELECT C.FIRSTNAME AS firstName, C.LASTNAME as lastName FROM ADDRESSBOOK_CONTACT AS C WHERE C.ADDRESSBOOK_ID = :addressbookId AND firstName = ?"); 

Wenn mein Positionsparameter einstellen, wird die Abfrage als normal laufen, aber es gibt kein Ergebnis:

query.setParameter(0, "firstname1010"); 
query.setParameter("addressbookId", addressbook.getId()); 

was falsch ist. Wenn ich meine Position in "named" ändere:

Dann gibt meine Abfrage die korrekten Ergebnisse zurück.

Ohne in eine komplizierte Erklärung zu gehen, warum ich das mache, würde ich gerne wissen, ob das Mischen der beiden Typen unterstützt werden sollte oder nicht? Ich bin mit 3.6.3.Final

Antwort

5

aus der Klasse Ebene docs winter auf org.hibernate.Query:

Sie können nicht und Spiel JDBC-Stil-Parameter und benannte Parameter in derselben Abfrage mischen.

So wird das Verhalten, das Sie sehen, vollständig erwartet.

Verwandte Themen