java - 使用 Hibernate 获取 GROUP_CONCAT 逗号分隔值

标签 java mysql sql spring hibernate

这是我迭代 module_id 的查询。 例如:1,2,3,4,5(使用 GROUP CONCAT)。

 String sql="SELECT GROUP_CONCAT(module_id) AS module_id
             FROM sox_customer_partner_modules "
          + "WHERE customer_id= :customer_id
             AND partner_id= :partner_id
             AND STATUS='1'";

我的查询执行正常,返回结果为 1,2,3,4,5。但是当我在 java 中迭代时,它只获取第一个值,即 1

我正在使用 hibernate 获取记录。

问题是我只能获取第一条记录。例如:1

但我想获取像 1,2,3,4,5 这样的字符串。

我的java代码是:

Session session = sessionFactory.getCurrentSession();
SQLQuery query = session.createSQLQuery(sql);
query.addScalar("module_id", Hibernate.INTEGER);
query.setParameter("customer_id", customer_id);
query.setParameter("partner_id", partner_id);

Integer module_id=0;
List<Object> CustModList = query.list();

return CustModList.toString(); //Which returns 1.. But I want 1,2,3,4,5

请帮助需要。提前致谢

最佳答案

您应该始终使用 GROUP BY,因为传统上,MySQL has been the only RDBMS allowing optional GROUP BY predicates .

使用这个查询:

String sql="SELECT GROUP_CONCAT(module_id) AS module_id
         FROM sox_customer_partner_modules "
      + "WHERE customer_id= :customer_id
         AND partner_id= :partner_id
         AND STATUS='1' 
         GROUP BY customer_id, partner_id";

当然,您应该更清楚哪些列应该标识一个组。

同时更改这一行:

query.addScalar("module_id", Hibernate.INTEGER);

到:

query.addScalar("module_id", Hibernate.STRING);

关于java - 使用 Hibernate 获取 GROUP_CONCAT 逗号分隔值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30934501/

相关文章:

mysql - 分隔一系列 txt 并将其放入 csv 或数据库中

sql - 我在哪里可以找到 mysql 的国家和州列表

mysql - 关于MySQL ORDER BY的问题

java - java中的可打印字符

java - Lombok 注释处理程序类 lombok.javac.handlers.HandleData 失败

java - 如何计算 JTextArea 中的行数,包括换行?

Mysql服务器不支持4字节编码的utf8字符

MySQL 查询 SELECT GREATEST int row VALUE between limits

sql - 如何多次执行存储过程

java - VTD-XML : XMLModifier. output() 抛出 IndexOutOfBoundsException