반응형
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을 작성하지 않아도 정상적인 동작이 가능해졌습니다.
참고 글
반응형
'Study > Spring' 카테고리의 다른 글
User 엔티티를 외래키로 가진 Post 엔티티 조회하기 | Spring Spring boot JPA Study (0) | 2022.02.16 |
---|---|
User 엔티티를 외래키로 가진 Post 엔티티 추가하기(INSERT) | Spring Spring boot JPA Study (0) | 2022.02.16 |
JPA Auditing 사용하여 엔티티 설계하기 | Spring Spring boot JPA Study (0) | 2022.02.15 |
Controller 통합 테스트 코드 | Spring Spring boot JPA Study (0) | 2022.02.12 |
[Spring | test | H2] test에서 H2 DB 연결하기 (0) | 2022.02.12 |
댓글