Подготовленный оператор в Hibernate не работает - PullRequest
0 голосов
/ 16 февраля 2012

Когда я делаю следующий запрос:

return (Formation) em
    .createQuery(
            "SELECT f FROM Formation f WHERE f.model" + modelType + "= :modelId")
    .setParameter("modelId", modelId)
    .getSingleResult();

Я получаю эту ошибку:

org.hibernate.PropertyAccessException: не удалось получить значение поля методом получения отражения для model.configuration.Model.id

Когда я заменяю подготовленное утверждение уродливым запросом, подобным приведенному выше, оно работает:

return (Formation) em
    .createQuery(
            "SELECT f FROM Formation f WHERE f.model" + modelType + "= " + modelId)
    .getSingleResult();

1 Ответ

0 голосов
/ 17 февраля 2012

я думаю modelId - это идентификатор вложенной сущности, а не самой сущности, поэтому я ожидал бы что-то подобное

"SELECT f FROM Formation f WHERE f.model" + modelType + ".ModelId = :modelId")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...