이번에는 다른 문제가 생겼다.
저번 cascade1글을 읽고 왔다면 코드는 알 수 있을 것이다.
아래와 같은 코드를 돌리면 또 에러가 발생한다.
@Test
void hello() {
Team team = new Team("team1");
em.persist(team);
Member member = new Member("yohan", 20);
member.setTeam(team);
team.getMembers().add(member);
em.persist(member);
em.createQuery("delete from Team t where t.id = :id")
.setParameter("id",team.getId())
.executeUpdate();
}
😰이 코드를 돌리면 저번과 같은 에러가 발생하는데 처음에는 뭐가 문제인지 잘 몰랐다. 차이점이라면 이번에는 jpql로 작성한 것 밖에 없다.
구글링을 해도 잘 안나와 chagGpt에 물어본 결과 jpql로 작성하게 되면 데이터베이스로 직접 쿼리를 날리게 되는데 이렇게 되면 cascade가 안 먹힌다는 것이였다.
실제로 entityManager로 직접 날리면 삭제가 되었는데 이 jpql로 바꾸면 삭제가 안되었다.
아래 stack-overflow사이트를 통해 답을 알 수 있었다.
참고 자료 : Stack Overflow