【问题标题】:Hibernate Criteria: subquery with INHibernate Criteria:带有 IN 的子查询
【发布时间】:2015-03-16 13:29:30
【问题描述】:

这里的第一个问题: 我正在使用 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.

谁能帮忙?

【问题讨论】:

    标签: java hibernate db2 nhibernate-criteria


    【解决方案1】:

    暂时这样修复它:

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

    不过,我仍然对一种更清洁的方法感到好奇!

    【讨论】:

      猜你喜欢
      • 2019-04-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-03
      • 2012-02-15
      • 2017-07-20
      • 1970-01-01
      • 2023-03-20
      相关资源
      最近更新 更多