-
[Spring JPA] @Query를 이용해 직접 쿼리문을 작성할 때 만나는 오류DB/MariaDB 2020. 11. 3. 11:29
stackoverflow.com/questions/11881479/how-do-i-update-an-entity-using-spring-data-jpa
JPA에서는 데이터의 컬럼을 update하기 위해선, 데이터를 가져와 setter를 이용해 값을 바꾸면 됩니다. transaction이 끝나면서 자동으로 변경사항을 반영해주기 때문에 명시적으로 save()를 호출하지 않아도 된다고 합니다. 아직 반복이 부족하고 JPA, repository, service 클래스를 왔다갔다하는 것이 익숙하지가 않아 직접 확인한 사항은 아닙니다. 일단은 참고하는 정도로 알고 있으면 될 것 같습니다. 검증하면 관련한 내용은 업데이트하겠습니다.
해당 글의 답변을 살펴보니까 JPA와 Spring-JPA가 완전히 같지는 않고 Spring-JPA에서는 update를 지원한다고 합니다. JPA는 query문을 일일이 만들지 않아도 공식 문서를 참고해 메소드를 작성하면 파싱을 통해 query문을 자동으로 만들어주지만 경우에 따라서는 직접 작성할 수 있습니다.
데이터 상태를 update 해야 한다면 @Modifying과 @Query를 이용하면 됩니다.
하지만 이렇게만 작성하면 오류가 날 수 있습니다.
오류가 안 나는 케이스가 있는 지는 잘 모르지만 종종 만날 수 있는 오류인 것 같습니다.
Validation failed for query for method public abstract..
@Query의 내용을 조금 변경해줘야 합니다.
@Query(value="UPDATE User u set u.firstname = 1? , u.lastname = 2? WHERE u.id = ?3", nativeQuery=true)
navtiveQuery 값을 true로 설정해주면 적어도 메소드의 유효성에 관한 실패는 해결될 것입니다.
'DB > MariaDB' 카테고리의 다른 글
[MariaDB] 윈도우10에서 루트(root) 계정의 비밀번호를 분실했을 때 (0) 2021.11.12 HeidiSQL 예약어 피하기 (0) 2021.11.03 HeidiSQL 외부 서버에 접속하기 (0) 2021.11.03 [SQL] 기본적이지만 잘 안 외워지는 쿼리문 (0) 2020.11.03 기간으로 조회할 때 유의할 점 (0) 2020.10.16