darlan_machado
Só para entender Cardapio tem vários Produto? Se sim, você pode, simplesmente, mapear para ser delete cascade.
Thiago_Ximenes
Exato! Mas como eu faço isso?
darlan_machado
Usando a propriedade cascade que as anotações @OneToMany e @ManyToMany disponibilizam:
cascade = CascadeType.ALL
Com o type ALL você deixa todas as operações de banco como sendo em cascata.
Mas, existem os tipo “DELETE”, “UPDATE”, etc.
Porém, eu faria diferente. Excluiria todos os produtos com o ID do cardápio e, só então, excluiria o mesmo. Puxaria o controle para mim.
Thiago_Ximenes
Então, tendo as classes Cardapio e Produto ficariam mais ou menos assim:
Cardapio.class:
@Entity
public class Cardapio {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private int id;
@OneToMany(cascade = CascadeType.REMOVE)
private Produto produto;
@NotNull
private String nome;
}
Produto.class:
@Entity
public class Produto {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private int id;
@ManyToOne
private Cardapio cardapio;
@NotNull
private String nome;
}
Seria assim?
Solucao aceita
Thiago_Ximenes
Modelo do Cardápio:
@Entity
public class Cardapio {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@OneToMany(cascade = CascadeType.ALL, mappedBy="cardapio")
private List<Produto> produto;
...
}
Modelo do produto:
@Entity
public class Produto {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private int id;
@ManyToOne
@JoinColumn(name="cardapio_id")
private Cardapio cardapio;
...
}