jpa cascade2

greenTea·2023년 4월 17일
0

이번에는 다른 문제가 생겼다.
저번 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

profile
greenTea입니다.

0개의 댓글