Hibernate: Kann einen benannten Parameter für OFFSET und LIMIT nicht verwenden?

9

Ich versuche das folgende NamedQuery zu erhalten:

%Vor%

Das Problem ist, dass Hibernate mit dem folgenden Stack-Trace beim Serverstart explodiert:

%Vor%

Nach einigem Versuch und Irrtum fand ich, dass das Ersetzen von ": offset" und ": limit" durch Literalwerte (0 bzw. 10) gut funktionierte. Gibt es einen Grund dafür, und gibt es eine Möglichkeit, die benannten Parameter in meiner Abfrage funktionieren zu lassen?

Ich habe einige andere Beispiele gesehen, die positionierte Parameter verwenden, um die Offset- und Grenzwerte in einer benannten Abfrage dynamisch festzulegen, aber ich möchte lieber nicht, dass mein Code zu einem Haufen nicht lesbarer query.setParameter(1, "someValue"); Unsinn degeneriert. Benannte Parameter sollten diese Art von Müllcode loswerden.

    
aroth 04.07.2011, 01:26
quelle

1 Antwort

18

Hibernate verfügt über eine spezielle API zur Angabe dieser Konzepte zur Laufzeit. Versuchen Sie Folgendes:

%Vor%

Ich vermute, der Grund dafür ist, dass die Datenbankanbieter sehr unterschiedlich sind, wie und wo in der SQL-Abfrage diese Konzepte spezifiziert sind. Daher ist es nicht sinnvoll, ein Format vor einem anderen zu wählen sie.

Auf diese Weise weiß die Dialekt-Implementierung klar, was zu tun ist, und kann es dann tun.

    
Bohemian 04.07.2011, 01:53
quelle