2012-02-16 2 views
0

Когда я делаю следующий запрос:Подготовленное заявление в Hibernate не работает

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(); 
+0

У вас есть геттер и сеттер для атрибута ModelID в классе свита? – kand

+0

Я не понимаю, зачем нужен геттер и сеттер с именем modelId, и у меня их нет, потому что у меня не было поля с именем modelId. modelId не может соответствовать одному из трех modelType: modelReport, modelProposal, modelInternship, для которых у меня есть getters и seters. – DevAntoine

ответ

0

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

"SELECT f FROM Formation f WHERE f.model" + modelType + ".ModelId = :modelId") 
Смежные вопросы