Olá Kayo,
Entendi sua dúvida. Você pode usar a função GROUP_CONCAT do MySQL para concatenar os valores da lista em uma única string separada por um caractere específico (por exemplo, ';'). Em seguida, você pode separar essa string em uma lista de objetos no seu código Java.
A consulta SQL ficaria mais ou menos assim:
SELECT o1.a, o1.b, GROUP_CONCAT(CONCAT(o2.c, ';', o2.d)) as objetos
FROM objeto1 o1
JOIN objeto2 o2 ON o1.id = o2.objeto1_id
GROUP BY o1.id
No código Java, você pode usar o método split() da classe String para separar a string em uma lista de objetos2. Algo assim:
List<Objeto1> resultado = entityManager.createNativeQuery(sql, "Objeto1ComObjetos2Mapping").getResultList();
for (Objeto1 o : resultado) {
List<Objeto2> objetos2 = new ArrayList<>();
String[] objetos2String = o.getObjetos().split(";");
for (String objeto2String : objetos2String) {
String[] campos = objeto2String.split(",");
objetos2.add(new Objeto2(campos[0], campos[1]));
}
o.setObjetos2(objetos2);
}
Espero ter ajudado e bons estudos!