Ich habe ein Problem mit der nativen Hibernate-Abfrage. Ich habe einen SELECT, der Array Slice (PostgreSQL-Datenbank) auswählt.
Das Problem ist, dass Hibernate den folgenden Teil erkennt: ": 300" von "SELECT my_array [1: 300] ..." als benannter Parameter und ich bekomme folgende Ausnahme: Nicht alle benannten Parameter wurden gesetzt.
Ich habe versucht, dem Doppelpunkt zu entkommen (:) mit ':', '::', aber ohne Erfolg.
Die Hibernate-Version ist 3.2
Ich benutze PostgreSQL nicht, aber wenn Sie keine passende Lösung für dieses Problem finden, können Sie einen Interceptor implementieren (EmptyInterceptor erweitern) und Ihre Abfrage in onPrepareStatement(String sql)
ändern.
Dies bedeutet, dass Sie etwas wie my_array[1|300]
verwenden und es als my_array[1:300]
umschreiben könnten, um das benannte Parameterproblem zu umgehen.
Bearbeiten : Ich bin mir nicht 100% sicher, dass das oben genannte funktioniert (Neuschreiben von nativem SQL und ob der Abfrageparser das Sonderzeichen zulassen würde). Ich habe nur das oben genannte in HQL und in den Kriterien getan, in denen ich den Indexhinweis als Fragekommentar übergab.
MyInterceptor extends EmptyInterceptor
funktioniert wie von Cherouvim erwähnt.
nicht vergessen
%Vor%in persistence.xml
Tags und Links sql java hibernate postgresql