Вопрос по sql, hibernate, parameters, hql – Почему setParameter не устанавливает параметр?

2

Я использую следующий код для (попытки) запроса базы данных:

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

Где clientRequest [0] из массива строк, а служебная переменная - это строка в моем POJO, сопоставленная с VARCHAR (45) в моей базе данных MySQL.

Когда я запускаю этот код, Hibernate показывает выполненный SQL-запрос как:

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=?

Что приводит меня к мысли, что значение clientRequest [0] не устанавливается правильно в качестве параметра.

Я проверил, что clientRequest [0] содержит допустимую строку, что он и делает. Я пробовал другие способы создания запроса, но ни один из них не сработал, они всегда показывают службу как «?», Хотя, если я использую очевидное:

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

это естественно дает правильный ответ

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

Что может помешать правильной работе setParamater?

Ваш Ответ

1   ответ
6

запроса. Параметр установлен правильно. Когда параметр не установлен, вы видите исключение.

Если вы хотите также регистрировать значения параметров, некоторые инструкции можно найти вВот.

Потрясающие. Я проверю это и проведу несколько тестов для подтверждения, прежде чем подтвердить. Большое спасибо. michael.orchard
Только что подтвердил, что параметры добавляются правильно, я не могу заставить запись работать в минуту, но ваш ответ был полностью правильным. Еще раз спасибо! michael.orchard

Похожие вопросы