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();
}
}