Este truco lo vi en la documentación de MySQL (vamos, sí, sí. no es Java, pero es algo que encontré y quiero compartirlo).
Imaginemos que tenemos una tabla así
<code>+--------+--------+
| campo1 | campo2 |
+--------+--------+
| fila1 | a |
| fila2 | b |
| fila2 | c |
| fila1 | b |
| fila3 | b |
| fila2 | c |
+--------+--------+
</code>
Y queremos concatenar todos los valores del campo2 por cada fila no repetida de campo1 así:
+--------+--------+
| campo1 | campo2 |
+--------+--------+
| fila1 | a,b |
| fila2 | b,c |
| fila3 | b |
+--------+--------+
Para ello, hay que usar la función de agregación GROUP_CONCAT
<code>
SELECT campo1,group_concat(distinct campo2) FROM tabla GROUP BY 1
</code>