Hibernate Criteria:带有IN的子查询

时间:2015-03-16 13:29:30

标签: java hibernate db2 nhibernate-criteria

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

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.

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

暂时解决此问题:

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 + "))"));
    }

我仍然很想要一个更清洁的方法来做到这一点!