2017-10-20 8 views
1

私は春のデータを使用します。私は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番号を返すようです。

+0

チェックを予想通り、それはList<Long>を返さないと思うContractRepository.findContractsIdForInvoicesCreation();

であると思います。値の1つがLong(例:null)ではないと思います。 – StanislavL

+0

System.Out.Printlnによってチェクシングされました - [2、3、4]が表示されます - exectly必要なもの –

+0

id値はLongsではありません。整数。結果クラス – StanislavL

答えて

1

私はこの問題は、私はあなたが配列にあるもの

+0

あなたは大丈夫です。ロングではなくBigIntegerを返します。 –

関連する問題