Java Hibernate条件:中包含的子查询

Java Hibernate条件:中包含的子查询,java,hibernate,db2,nhibernate-criteria,Java,Hibernate,Db2,Nhibernate Criteria,第一个问题: 我使用的是DB2和Java Hibernate标准。 我需要一种在where子句中使用子查询的方法,并且能够在子查询中使用。但我似乎找不到解决办法。 这就是我现在拥有的: criteria.add(Restrictions.sqlRestriction("{alias}.arnrmb in (select arnrvb from faarvb where mgnrvb in ?)", getWarehouses().toArray(), typeArray)); 我得到这个错误:

第一个问题: 我使用的是DB2和Java Hibernate标准。 我需要一种在where子句中使用子查询的方法,并且能够在子查询中使用。但我似乎找不到解决办法。 这就是我现在拥有的:

criteria.add(Restrictions.sqlRestriction("{alias}.arnrmb in (select arnrvb from faarvb where mgnrvb in ?)", getWarehouses().toArray(), typeArray));
我得到这个错误:

2015-03-16 14:07:13,566 [ERROR] (SqlExceptionHelper:147) - Descriptor index not valid.

有人能帮忙吗?

现在这样修复了它:

if (CSCommonStatics.isNotEmpty(getWarehouses())) {
        StringBuilder sb = new StringBuilder();
        ArrayList<String> warehousesList = new ArrayList<String>(getWarehouses());

        for (int i = 0; i < warehousesList.size(); i++) {
            if (i != warehousesList.size() - 1) {
                sb.append("'" + warehousesList.get(i) + "'" + ", ");
            } else {
                sb.append("'" + warehousesList.get(i) + "'");
            }
        }
        String warehousesQuery = sb.toString();

        criteria.add(Restrictions.sqlRestriction("{alias}.arnrmb in (select arnrvb from faarvb where mgnrvb in (" + warehousesQuery + "))"));
    }
不过,我还是很想找到一种更干净的方法