在我的代码中,我为此编写了一个JPA Query函数,我将Set ids作为参数传递。
List<InvoiceBillData> findByInvoiceBillDataIdIn(Set<Long> failedInvBillDataIds);
我的要求是我需要一个给定id的对象列表,这是一个主键。但是当我运行它时,JPA的自动生成的查询会抛出错误。目前,Set failedInvBillDataIds有2个ID,因此JPA生成如下查询。但是,它增加了额外的括号。
Error Code: 907
Call: SELECT inv_bill_data_id, account_id, billing_profile_id, CURRENCY, current_total, total_due, due_date, bill_id, previous_total, total_taxes FROM INVOICE_BILL_DATA WHERE (inv_bill_data_id IN ((?,?)))
bind => [2 parameters bound]
Query: ReadAllQuery(referenceClass=InvoiceBillData sql="SELECT inv_bill_data_id, account_id, billing_profile_id, CURRENCY, current_total, total_due, due_date, bill_id, previous_total, total_taxes FROM INVOICE_BILL_DATA WHERE (inv_bill_data_id IN (?))")] with root cause
java.sql.SQLSyntaxErrorException: ORA-00907: missing right parenthesis
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:450) ~[ojdbc7-12.1.0.2.jar:12.1.0.2.0]
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:399) ~[ojdbc7-12.1.0.2.jar:12.1.0.2.0]
at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:1059) ~[ojdbc7-12.1.0.2.jar:12.1.0.2.0]
at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:522) ~[ojdbc7-12.1.0.2.jar:12.1.0.2.0]
如何将Collection作为参数传递?我的查询功能有问题吗?