Eu tenho o seguinte cenário
Uma Entidade Person qualquer:
@Entity
public class Person {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
public Person(String name) {
this.name = name;
}
}
E uma Entidade Team como uma lista de person:
@Entity
public class Team {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
@OneToMany
@Cascade(CascadeType.ALL)
private List<Person> people;
}
Coloquei “CascadeType.All” no meu atributo Person da classe Team, pois desejo que ao deletar um Team todas as pessoas daquele Team sejam deletadas
Então eu carrego o objeto Team e o deleto:
Team team = (Team) session.load(Team.class, 1L);
session.delete(team);
E tudo funciona corretamente.
Porém, o método Delete aceita objetos detached. Se passo um objeto Team detached sem carregar, ele deleta o objeto Team mas não deleta nenhum person relacionado.
session.delete(new Team(1L));
Este comportamento não deveria ser o msm para objetos DETACHED e MANAGED???