Die Parameter einen Null-basierten Index verwenden. Versuchen:
sessionFactory.getCurrentSession().createSQLQuery("update table1 set someCounter = someCounter + 1 where id = ?")
.setParameter(0, someId)
.executeUpdate();
Die aktuellen Hibernate JavaDocs auch angeben, dass setPosition für Positionsparameter auf Null basierende Indizierung beruht. http://docs.jboss.org/hibernate/orm/4.1/javadocs/org/hibernate/Query.html#setParameter%28int,%20java.lang.Object%29
setParameter
Query setParameter(int position,
Object val)
throws HibernateException
Bind a value to a JDBC-style query parameter. The Hibernate type of the parameter is first detected via the usage/position in the query and if not sufficient secondly guessed from the class of the given object.
Parameters:
position - the position of the parameter in the query string, numbered from 0.
val - the non-null parameter value
Throws:
HibernateException - if no type could be determined
Überprüfen Sie die aus dem Parameter Abschnitt dieses Dokuments: https://access.redhat.com/knowledge/docs/en-US/JBoss_Enterprise_Web_Server/1.0/html/Hibernate_Core_Reference_Guide/querysql.html#id3043464
Es gab einige Diskussionen darüber, ob die setParameter() -Methode Null basiert oder ein basiert. Diese Verwirrung ist auf die Ausnahme zurückzuführen, die das Poster erhält, indem es feststellt, dass die Parameter 1-basiert sind, während die JavaDoc angibt, dass sie nullbasiert sind. Ich analysierte den Hibernate-Quellcode und glaube, dass sie tatsächlich nullbasiert sind. Unter der Annahme, dass ich die richtige Klasse überprüft habe, verwendet der zugrunde liegende Code eine Liste zum Speichern der Parameter-Bind-Werte, was implizieren würde, dass die setParameter-Methode tatsächlich nullbasiert ist. Kasse den Quellcode für sich selbst: https://github.com/hibernate/hibernate-orm/blob/master/hibernate-core/src/main/java/org/hibernate/internal/AbstractQueryImpl.java
Die Die Verwendung von benannten Parametern gilt für das Jav eine persistente Abfragesprache und ist nicht für systemeigene Abfragen definiert. –
@ kmb385: Ich werde überprüfen, aber die Antwort trotzdem aktualisiert. –
Meine Quelle: http://stackoverflow.com/questions/3144235/jpa-hibernate-native-queries-do-not-recognize-parameters –