@Sandro_Machado , seguindo suas dicas e outros posts neste forum… fiz assim:
Criei duas classes:
Balcao e Frutas:
@Entity
@Table(name = "tb_balcao")
public class Balcao implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "balcao_cod")
private Long cod;
@Column(length = 150)
private String nome;
@OneToMany(mappedBy = "balcao", cascade = {CascadeType.ALL, CascadeType.REMOVE})
private List<Fruta> frutas;
//Construtor
public Balcao() {
}
//Getter e Setter
....
@Entity
@Table(name = "tb_fruta")
public class Fruta implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "fruta_cod")
private Long cod;
@Column(length = 150)
private String nome;
private String preco;
@ManyToOne
private Balcao balcao;
//Construtor
public Fruta() {
}
//Getter e Setter
....
Montei o DAO e o Controller…
No meu controller eu tenho um método para adicionar Balcao e adiciona as frutas também, só pra lembrar que meu formulário tem os inputs para Balcão e um botão javascript para criar os campos das frutas.
:
@Post
public void adiciona(Balcao balcao, List<String> nomes, List<String> precos) {
String retorno = "Operação realizada com sucesso.";
try {
this.daoFactory.getBalcaoDao().salva(balcao);
} catch (Exception ex) {
System.out.println(ex);
}
insereListaFrutas(balcao, nomes, precos);
try {
result.redirectTo(this).lista();
} catch (ParseException ex) {
Logger.getLogger(ClienteController.class.getName()).log(Level.SEVERE, null, ex);
}
}
E por fim meu método insereListaFrutas…
private String insereListaFrutas(Balcao balcao, List<String> nomes, List<String> precos) {
List<Frutas> frutas= new ArrayList<>();
for (String nome : nomes) {
d.setNome(nome);
d.setBalcao(balcao);
frutas.add(d);
for (String preco: precos) {
System.out.println(preco);
d.setPreco(preco);
}
for (Fruta a : frutas) {
try {
this.daoFactory.getFrutaDao().salva(a);
} catch (Exception ex) {
System.out.println(ex);
}
}
}
}
Então no meu formulário, preencho balcão, clico no botao JS aparecem dois inputs para nome e preco da fruta, clico de novo, outros dois inputs… preencho a outra fruta , se precisar clico de novo, preencho mais fruta e clico em salvar…
Vai tudo para o banco… só o bendito preco que está no for que fica sobrescrevendo…rsrsr