在JPQL查询中使用数组

rak*_*afo 10 java hibernate jpa jpql

如何在JPQL查询中使用数组列表?我想要这样的事情:我正在传递这个

private static final String[] MASKS = {"30109", "30111"};
Run Code Online (Sandbox Code Playgroud)

public List<Account> findAccount(String[] Masks){
StringBuilder sb = new StringBuilder("from AccountTable a where SUBSTRING(a.Account,1,5) in :Masks ");
Query q = em.createQuery(sb.toString(), AccountTable.class)
                .setParameter("Masks",Masks);
}
Run Code Online (Sandbox Code Playgroud)

目前,错误是

Encountered array-valued parameter binding, but was expecting [java.lang.String (n/a)]; nested exception is java.lang.IllegalArgumentException: Encountered array-valued parameter binding, but was expecting [java.lang.String (n/a)]
Run Code Online (Sandbox Code Playgroud)

Ale*_*tes 20

阅读这个网站似乎是可能的,但你的数组必须是a Collection,也许是这样的:

public List<Account> findAccount(String[] Masks){
    StringBuilder sb = new StringBuilder("from AccountTable a where SUBSTRING(a.Account,1,5) in :Masks ");
    Query q = em.createQuery(sb.toString(), AccountTable.class)
                .setParameter("Masks", Arrays.asList(MASKS));
}
Run Code Online (Sandbox Code Playgroud)

应该帮助你.