2012-02-09 151 views
3

タイトルエラーが発生します。私は、クエリを作成するために使用していた文字列は、ここにERROR:演算子が存在しません:characters varying = numeric

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

そして、私は私のデータベースではいANE partTerminolgyId、なぜ私はこのエラーを取得していないアイデアを持っていないのjava

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

のクリップです数字です。

アイデア???

+0

あなたは 'query.setParameter()'の中に引数を持っています。 'query.setParameter(" productTypeIds "、partTerminologyIds)'でなければなりません。 ( 'List ' :)のあとにスペースが必要です) –

答えて

3

最終的には、「外部キー」が1つのテーブルの文字列であり、もう1つのテーブルの数値であったことになりました。新しいスクリプトでデータベースを再構築し、新しいデータベースをリバースエンジニアリングしませんでした。

0

これはHibernateクエリのようです。コレクションの値を指定するには、query.setParameterListを実行する必要があります。それ以外の場合は、リストをシリアライズ可能なBLOBとしてバインドする代わりに、:productTypeIdsをプレースホルダのリストに展開することをHibernateは知らないでしょう。

+0

setParameterListを持たないjavax.persistence.TypedQueryを使用しています。また、私はこれを、MySQL – Landister

+2

@ user517721と一緒に扱うべきです.MySQLで動作するものと動作しないものは、ある驚きの要素を保持しています。 –

1

このクエリは無効です:

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

これはちょっと遅いですが、製品タイプは別のテーブルです。 – Landister

関連する問題