Tenho uma classe que recebe uma List data, sendo uma lista com requisição.
Porém preciso passar os itens desta lista que estão em outra tabela usa a chave estrangeira idRequest e idCompany.
Andei pesquisando e não consegui achar algo para passar as duas List para o Report. segue a classe abaixo:
Qualquer ajuda é bem vinda 
package br.com.Controllers;
import br.com.Global.FormatAllTypeDatesAndHours;
import br.com.Models.Request;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JOptionPane;
import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import net.sf.jasperreports.view.JasperViewer;
/**
*
* @author Vin4h
*/
public class RequestReportController {
String caminho = System.getProperty("user.dir");
FormatAllTypeDatesAndHours format = new FormatAllTypeDatesAndHours();
public Connect c = new Connect();
public RequestReportController() {
this.c = new Connect();
}
public void generateReportRequest(List<Request> data) {
RequestController rc = new RequestController();
InputStream font;
if (data.size() > 0) {
try {
for (Request d : data) {
d.setRequestDate(format.formatDateUsDataBase(d.getRequestDate()));
}
if (data.get(0).getType().equals("SC")) {
font = new FileInputStream(caminho + "/Files/RequestReportSupply.jrxml");
JasperReport report = JasperCompileManager.compileReport(font);
//Neste local que passo os dados
JasperPrint print = JasperFillManager.fillReport(report, null,
new JRBeanCollectionDataSource(data));
JasperViewer.viewReport(print, false);
} else if (data.get(0).getType().equals("FU")) {
font = new FileInputStream(caminho + "/Files/RequestReportFuel.jrxml");
JasperReport report = JasperCompileManager.compileReport(font);
JasperPrint print = JasperFillManager.fillReport(report, null,
new JRBeanCollectionDataSource(data));
JasperViewer.viewReport(print, false);
} else {
font = new FileInputStream(caminho + "/Files/RequestReportParts.jrxml");
JasperReport report = JasperCompileManager.compileReport(font);
JasperPrint print = JasperFillManager.fillReport(report, null,
new JRBeanCollectionDataSource(data));
JasperViewer.viewReport(print, false);
}
} catch (Exception e) {
showJOptionPane("Relatorio Requisição", e.getMessage());
}
} else {
showJOptionPane("Erro na impressão", "Requisição ou empresa não existem");
}
}
public void showJOptionPane(String header, String text) {
JOptionPane.showMessageDialog(null, text, header, JOptionPane.ERROR_MESSAGE);
}
}

), usando um MAP para passar parâmetros.


