Olá, tudo bem com vocês?
Contextualizando: sou novo com Java/Hibernate/Spring e tenho um projeto no Spring Boot. Para este projeto estou usando um banco de dados Oracle, mas as tabelas não estão sendo geradas automaticamente pelo Hibernate porque estou usando outra ferramenta (Visual Paradigm) para gerar os DLL do banco.
Problema: quando deleto um registro que possui relacionamento com outro registro de outra tabela acaba dando erro (uso o Spring Boot apenas como API/backend) por ficar com um registro “orfão”.
Dúvida: quando coloco no meu model @ManyToMany(cascade = { CascadeType.ALL })
consigo cadastrar normalmente, porém não faz a deleção em cascata. Se coloco @ManyToMany(cascade = { CascadeType.REMOVE })
consigo deletar com efeito cascata mas não consigo cadastrar os dois registros em tabelas diferentes. Como posso fazer com que a deleção em cascata funciona?
Não sei se consegui ser claro quanto ao problema/dúvida. Qualquer coisa posso entrar em mais detalhes nos comentários.
Colocarei aqui exemplo de código que estou usando para tentar deixar mais visível.
@Entity(name = "testes_a")
@ApiModel("Teste de classe A")
public class TesteA extends Paging implements Serializable, Comparable<TesteA> {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "testes_a_seq")
@SequenceGenerator(name = "testes_a_seq", allocationSize = 1, sequenceName = "testes_a_seq")
@Column(name = "a_id")
@JsonProperty
@ApiModelProperty(value = "Campo referente ao código do Teste A", required = true)
private Long id;
@ManyToMany(cascade = { CascadeType.ALL })
@JoinTable(name = "testes_a_enderecos", joinColumns = {
@JoinColumn(name = "a_id") }, inverseJoinColumns = { @JoinColumn(name = "end_id") })
@JsonProperty
@JsonIgnore
@ApiModelProperty(value = "Campo referente aos Endereços do Teste A", required = false)
private List<Endereco> enderecos;
}