Java Hibernate条件:中包含的子查询
第一个问题: 我使用的是DB2和Java Hibernate标准。 我需要一种在where子句中使用子查询的方法,并且能够在子查询中使用。但我似乎找不到解决办法。 这就是我现在拥有的: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)); 我得到这个错误:
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 + "))"));
}
不过,我还是很想找到一种更干净的方法