这里的第一个问题:
我正在使用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.
有人可以帮忙吗?
答案 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 + "))"));
}
我仍然很想要一个更清洁的方法来做到这一点!