ОШИБКА: оператор не существует: переменный символ = числовой - PullRequest
3 голосов
/ 10 февраля 2012

Так что я продолжаю получать ошибку заголовка. Строка, которую я использую для создания запроса:

  select p from Product p where  p.productType.productTypeId in (:productTypeIds)

А вот клип из java

    List<Long>partTerminologyIds = getProducTypeds(partTerminologys);
    ..........................................................................
    query.setParameter("partTerminologyIds", productTypeIds);

Понятия не имею, почему я получаю эту ошибку, да, partTerminolgyId в моей базе данных числовой 18.

Есть идеи ???

Ответы [ 3 ]

4 голосов
/ 13 февраля 2012

В итоге получилось, что «внешний ключ» был строкой в ​​одной таблице, а числовой - в другой.Я перестроил базу данных с помощью новых сценариев и не перепроектировал новую базу данных.

1 голос
/ 10 февраля 2012

Этот запрос недействителен:

select p from Product p where  p.productType.productTypeId in (:productTypeIds)

Вы имеете в виду:

SELECT p FROM product p WHERE p.productTypeId IN (:productTypeIds)

Или, скорее:

SELECT * FROM product p WHERE p.productTypeId IN (:productTypeIds)

И если да, то каковы данныевведите productTypeId в вашем запросе.Пожалуйста, уточните.

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

Это похоже на запрос Hibernate.Вам нужно сделать query.setParameterList, чтобы указать значение коллекции, иначе Hibernate не будет знать о расширении :productTypeIds до списка заполнителей, вместо того, чтобы просто связывать список как сериализуемый большой двоичный объект (который я считаю ужасным по умолчанию).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...