Study/Spring
@Query로 update문 작성하기 | Spring Spring boot JPA 쿼리 어노테이션
M개발자
2022. 4. 27. 23:01
반응형
Group 테이블과 User 테이블은 1:N 관계를 가지고 있습니다.
이미 생성되어있는 User 엔티티에 Group 엔티티의 정보를 업데이트하는 과정을 설명하고자 합니다.
public interface UserRepository extends CrudRepository<User, Long> {
@Modifying
@Transactional
@Query(value = "UPDATE user_tb u set u.group_id = :groupId where u.user_id = :userId", nativeQuery = true)
void updateGroupId(long groupId, long userId);
}
@Modifying
- SELECT가 아님을 명시하는 어노테이션입니다.
- UPDATE, DELETE, INSERT, DDL 문에서 사용할 수 있습니다.
@Transactional
- UPDATE, DELETE 문에서는 표기해야 정상적으로 작동합니다.
@Query(value = "UPDATE user_tb u set u.group_id = :groupId where u.user_id = :userId", nativeQuery = true)
!! 테이블명과 컬럼명은 엔티티의 이름이 아닌 데이터베이스에 적용된 이름으로 작성해야 합니다.
만약 @Table(name = "user_tb") 같이 name을 주었다면 name에 해당하는 이름으로 해야 합니다.
nativeQuery = true
- true이면 SQL을, false이면 JPQL을 나타냅니다. 기본값은 false입니다.
:groupId
- 매개변수를 사용할 때에는 : 를 붙여 사용할 수 있습니다.
- 자바 8버전 이후로는 @Param을 작성하지 않아도 정상적인 동작이 가능해졌습니다.
참고 글
반응형