Hibernate Native Query-Problem mit benannten Parametern

8

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

    
dime 08.05.2010, 17:24
quelle

4 Antworten

4

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.

    
cherouvim 08.05.2010, 18:16
quelle
3

Der Doppelpunkt kann nicht in Hibernate selbst ( Bug seit 2005) entfernt werden.

    
Henning 08.05.2010 18:35
quelle
1
%Vor%

Rufen Sie stattdessen diese Funktion auf. Habe es nicht versucht aber es wird irgendwie so funktionieren.

    
Daniel 08.05.2010 19:01
quelle
1

MyInterceptor extends EmptyInterceptor funktioniert wie von Cherouvim erwähnt.

nicht vergessen

%Vor%

in persistence.xml

    
hans wurst 27.03.2013 18:59
quelle

Tags und Links