2015-03-16 2 views
0

Первый вопрос: Я использую критерии Гибернации DB2 и Java. Мне нужен способ использовать подзапрос в моем предложении where и иметь возможность использовать IN в подзапросе. Но я не могу найти решение. Это то, что я сейчас:Критерий спящего режима: подзапрос с 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

Fixed это так сейчас:

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

Я все еще интересно, для более чистого способа сделать это, хотя!

Смежные вопросы