2014-08-15 2 views
0

Мне нужно использовать предложение IN в предложении SQL. У меня есть данные в одной таблице с типом на Int (11).hibernate как asign ParameterList для предложения IN

И у Y есть строка из другой таблицы, которая является критерием.

Например, в таблице A у меня есть значение 3 типа Int. В таблице/процессе B у меня есть строка «0123».

мне нужно запросить таблицу А, чтобы удовлетворить этот критерий: Select * из таблицы А где attrib_1 IN (0,1,2,3)

Поскольку запись п имеет значение 3, оно должно быть возвращен.

Так я пытаюсь использовать .setParameterList, как это:

 List<BloqueCruzamiento> bloques = session.createQuery("FROM BloqueCruzamiento AS b WHERE b.anio=:anio AND b.activo=true AND b.grupo=:categoria AND b.pr IN(:pr_set)ORDER BY b.nroParcela, b.cruza, b.pedigree") 
           .setParameter("anio", grupo.getAnio()) 
           .setParameter("categoria", grupo.getCategoria()) 
           .setParameterList("pr_set", pr_parm) 
           .list(); 

фунтов на параметре "pr_set". Я хочу знать, как преобразовать строку «0123» в коллекцию целых чисел (0,1,2,3).

Поэтому я могу передать этот параметр методу setParameterList().

Подтвердить, что я сейчас хочу преобразовать String в Char Array, затем цикл и преобразовать каждый элемент в массив целых чисел.

Может ли кто-нибудь дать решение?

С уважением

ответ

0

вы можете использовать код, приведенный ниже, чтобы получить список из строки

String s = "0123"; 
     List<Integer> pr_parm = new ArrayList<Integer>(); 
      for(int i=0;i<s.length();i++) { 
       if (Character.isDigit(s.charAt(i))) { 
        pr_parm.add(Integer.parseInt(String.valueOf(s.charAt(i)))); 
       } 
      } 
      System.out.println(pr_parm); 

Затем вы можете использовать этот список в вашем setParameterList("pr_set", pr_parm)

+0

Спасибо! Я закончил использовать альтернативу вашему решению. – Nicolas400

0

это было тэ решения.

String[] sele = grupo.getPr_sel().split(","); 
    Integer[] pr_parm_int = new Integer[sele.length]; 
    for (int x=0; x<sele.length;x++){ 
     pr_parm_int[x] = Integer.valueOf(sele[x]); 
    } 

Первая строка - это синтаксический анализ строки и полосок комы.

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