Warum setzt setParameter den Parameter nicht?

Ich verwende den folgenden Code, um eine Datenbank abzufragen (zu versuchen):

Query query = session.createQuery("from Trace where service = :service");
query.setParameter("service", clientRequest[0]);

Wobei clientRequest [0] aus einem Array von Strings stammt und die Service-Variable ein String in meinem POJO ist, der einem VARCHAR (45) in meiner MySQL-Datenbank zugeordnet ist.

Wenn ich diesen Code ausführe, zeigt Hibernate die ausgeführte SQL-Abfrage wie folgt an:

Hibernate: select trace0_.traceId as traceId0_, trace0_.service as service0_, trace0_.longitude as longitude0_, trace0_.latitude as latitude0_, trace0_.timestamp as timestamp0_ from trace trace0_ where trace0_.service=?

Was mich zu der Annahme veranlasst, dass der Wert von clientRequest [0] als Parameter nicht korrekt eingestellt ist.

Ich habe überprüft, ob clientRequest [0] eine gültige Zeichenfolge enthält. Ich habe andere Möglichkeiten zum Erstellen einer Abfrage ausprobiert, aber keine davon hat funktioniert. Der Dienst wird immer als "?" Angezeigt. Wenn ich jedoch das Offensichtliche verwende:

Query query = session.createQuery("from Trace where service = 21");

es gibt natürlich die richtige Antwort von

Hibernate: select trace0_.traceId as traceId0_, trace0_.service as service0_, trace0_.longitude as longitude0_, trace0_.latitude as latitude0_, trace0_.timestamp as timestamp0_ from trace trace0_ where trace0_.service=21

Was kann dazu führen, dass setParamater nicht mehr richtig funktioniert?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage