4

私は次のnamedQueryを持っています:

@NamedQuery(name = Department.getDepartmentsByIds, query = "SELECT tbl FROM Department tbl where tbl.id in (:departmentsIds)") 

パラメーターを渡したい: departmentsIds = "1,2,3" 次のように:

query.setParameter("departmentsIds","1,2,3");

しかし、私はエラーが発生します:

java.lang.IllegalArgumentException: Parameter value [1,2,3] was not matching type [java.lang.Long]

なぜアイデアはありますか?

4

2 に答える 2

6

Listの代わりに をsetParameterメソッドに渡しStringます。のジェネリック型引数はList、フィールドの型に対応している必要がありますdepartmentIds

List<Integer> ids = new ArrayList<Integer>(); //this should be your id column's type
ids.add(1);
ids.add(2);
ids.add(3);
query.setParameter("departmentsIds",ids);
于 2013-08-14T10:07:32.043 に答える
0

の列idDepartmentjava.lang.Longであり、あなたsetParameterが設定しようとしているのは、それがString [1,2,3]あなたが見る理由です。java.lang.IllegalArgumentException実装する正しい方法は、@Kevin が提案した型ListLong型を作成し、引数を追加することです。

于 2013-08-14T10:19:04.553 に答える