hibernate如何为IN子句分配ParameterList



我需要在SQL语句中使用IN子句。我在一个表中有数据类型为Int(11)。

和Y有一个来自另一个表的String作为条件。

例如,在表A中,i有Int类型的值3。在表/进程B中,我有字符串"0123"。

我需要查询表A来满足这个条件:Select * from Table A where attrib_1 IN (0,1,2,3)

因为记录n的值是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();

quid在"pr_set"参数上。我想知道如何将字符串"0123"转换为整数(0,1,2,3)的集合。

所以我可以把这个参数传递给setParameterList()方法。

我现在的一种方法是将String转换为Char Array,然后循环,并将每个元素转换为Integer Array。

谁能给出另一个解决方案?

您可以使用下面的代码从String

获取列表
  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)

中的列表

这就是解决方案。

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]);
    }

第一行是解析字符串并去掉逗号。

相关内容

  • 没有找到相关文章

最新更新