JPA salvar tabela pai e filha em diferentes transações

Preciso salvar registros de 3 tabelas relacionadas que recebo através de json, porém não estou conseguindo, alguém poderia me dizer se há como fazer dar certo dessa forma abaixo ou se preciso trazer tudo em forma de json para depois então salvar no banco?
O erro que recebo é por não estar os dados salvos na tabela pai

object references an unsaved transient instance - save the transient instance before flushing : com.sistemas.sigcm.model.EmpresaProdutoServico.empresa -> com.sistemas.sigcm.model.Empresa
@Entity
@Table(name = "empresa")
public class Empresa implements Serializable {
	private static final long serialVersionUID = 1L;

	private Long id;
	private String diretorio;
	private String cartao;
	private String empresa;
	
	@OneToMany(mappedBy = "empresa", cascade = CascadeType.ALL, orphanRemoval = true)
	private List<EmpresaProdutoServico> listaProdutoServico;
	
	private String nomeContato;
	private String email;
	private String contatoTelefonico;
	private String telefoneFixo;
	private String site;
	private int recomendacoes;
	
	//getter and setter
@Entity
@Table(name = "produtoServico")
public class ProdutoServico implements Serializable {
	private static final long serialVersionUID = 1L;
	
	private Long id;
	private String produtoServico;
	
	@OneToMany(mappedBy = "produtoServico", cascade = CascadeType.ALL, orphanRemoval = true)
	private List<EmpresaProdutoServico> listaEmpresaProdutoServico = new ArrayList<>();
@Entity
@Table(name = "empresaProdutoServico")
public class EmpresaProdutoServico implements Serializable {
	private static final long serialVersionUID = 1L;
	
	private Long id;
	private Empresa empresa = new Empresa();
	
	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "produtoServico_id")
	private ProdutoServico produtoServico = new ProdutoServico();
	
	private int curtidas;

E no Bean estou fazendo assim:

for (ProdutoServico produtoServico : listaProdutosServicosRemote) {
	System.out.println("Entrou for EmpresaProdutoServico");
	// empresaProdutoServico.setEmpresa(empresa);

	try {
		cadastroProdutosServicos.salvar(produtoServico);
	} catch (NegocioException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
}

for (Empresa empresa : empresasRemote) {
	try {
		cadastroEmpresas.salvarFlush(empresa);
	} catch (NegocioException e1) {
		// TODO Auto-generated catch block
		e1.printStackTrace();
	}

}

for (EmpresaProdutoServico empresaProdutoServico : listaEmpresaProdutosServicosRemote) {
	System.out.println("Entrou for EmpresaProdutoServico");
	// empresaProdutoServico.setEmpresa(empresa);
	//empresaProdutoServico.setProdutoServico(produtoServico);
	System.out.println("ProdutoServico: " + produtoServico);
	System.out.println("Empresa: " + empresa.getEmpresa());
	System.out.println("Empresa: " + empresaProdutoServico.getProdutoServico().getProdutoServico());
	try {
		cadastroEmpresasProdutosServicos.salvar(empresaProdutoServico);
	} catch (NegocioException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
}

É um problema so do relacionamento. Voce so precisa salvar a empresa. Porem antes de salva-la voce precisa setar nela a lista de EmpresaProdutoServico. Assim quando voce salvar a empresa, a JPA ira salvar tudo e uma unica vez. Faz o for antes de chamar o salvar empresa. seta a empresa em cara item da lista, no final seta a lista na empresa e chama o metodo salvar empresa.