hola despues de mucho buscar he dado con el problema y a continuación os dejo la solución que encontre por si a otra persona le pueda servir.
El codigo del datasource esta bien y puedo recuoperar los datos por medio de los field pero en el codigo dode envio los datos por el hashmap esta mal configurado, para enviar los datos se debe tener la siguiente estructura:
1)HashMap(donde estan los datos que pintare en el subreporte)
Código:
Map datos = new HashMap();//datos HM1
datos.put("uno", "un valor");
datos.put("dos", "dos valor");
2) incluir el hasmap anterior en un arraylist que en i caso lo llme primerAL
Código:
ArrayList primerAL = new ArrayList();//AL1
primer.add(datos);
3) adicionar el arraylist primerAL a otro arraylist
Código:
ArrayList segundoAL = new ArrayList();//AL2
segundoAL.add(primerAL);
4) crear un objeto collection con el segundo arraylist "segundoAL"
Código:
Collection subdos = segundoAL;
5) agregar la coleccion al hasmap que se colocara como parametro para enviar los datos al reporte
Código:
Map enviar = new HashMap();
enviar.put("subdos", subdos);
Es un poco engorroso pero funciono de esta manera envio los datos por un datasource sin necesidad de que mi reporte se conecte con la base de datos directamente.