私は春のデータを使用します。私はDBからいくつかの契約を取得したいです。だから私は2つのクエリーを作成します。最初は私が必要とする契約のIDを取得し、2番目に私はこのIDによって契約を取得します。クエリID戻り値タイプ
Repository.class
の最初のクエリ@Query(nativeQuery = true, value =
"select id from (" +
"select contract.id, max(invoice.period_to) " +
"from public.invoice " +
"join public.contract on contract.id = invoice.contract_id " +
"where invoice.period_to <= '2017-10-20' " +
"AND contract.close_type IS NULL " +
"AND contract.payment_type != 'TRIAL' " +
"group by contract.id" +
") foo ")
List<Long> findContractsIdForInvoicesCreation();
ServiceJPA.class
しかし、私はエラーを持っている上記の最後の行インチ
java.lang.IllegalArgumentException: Parameter value element [2] did not match expected type [java.lang.Long (n/a)]
私は単に作成した場合
List<Long> contractsIdL = new ArrayList<>();
contractsIdL.add(2L);
contractsIdL.add(3L);
contractsIdL.add(4L);
List<Contract> contracts = contractRepository.findAll(contractsId);
すべてが正常に動作します。何が間違っているのか理解していない。どのようなタイプの最初のクエリの戻りID?
p.s. DBのid型はbigintです
p.p.s私はSystem.out.printlnで最初の質問をしました - それはcorect番号を返すようです。
チェックを予想通り、それは
List<Long>
を返さないと思うContractRepository.findContractsIdForInvoicesCreation();
であると思います。値の1つがLong(例:null)ではないと思います。 – StanislavL
System.Out.Printlnによってチェクシングされました - [2、3、4]が表示されます - exectly必要なもの –
id値はLongsではありません。整数。結果クラス – StanislavL