这是我迭代 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/