본문 바로가기
공부

[JPA/JPQL] Update/delete queries cannot be typed 해결

by happyeuni 2022. 8. 5.

org.springframework.dao.InvalidDataAccessApiUsageException: Update/delete queries cannot be typed; nested exception is java.lang.IllegalArgumentException: Update/delete queries cannot be typed

em.createQuery("delete from Goal as g where g.id = :goalId and g.member.id = :memberId",Goal.class)
                .setParameter("goalId",goalId).setParameter("memberId",memberId).getResultList();

초기에 작성한 코드는 이것이었다.

delete문은 조회 대상과 반환 값의 형태가 Enity가 아닌 불분명한 쿼리이므로 클래스 변수를 명시할 필요가 없다. 

그리고 getResultList()도 절대 아니다. 반환받을 결과가 없기 때문이다.

그래서 수정한 코드는 아래와 같다.

em.createQuery("delete from Goal as g where g.id = :goalId and g.member.id = :memberId")
                .setParameter("goalId",goalId).setParameter("memberId",memberId).executeUpdate();

 

 

 

참고 : 

https://devraphy.tistory.com/633

 

6. 오류 해결 스토리 - Update/delete queries cannot be typed

0. 문제 설명 a) JPQL을 이용한 Update 쿼리 작성 - 회원 정보를 수정하기 위해서 다음과 같은 쿼리문을 작성했다. public int updateById(Long id, String name, String email, String password) { return em.cre..

devraphy.tistory.com

 

댓글