반응형
Spring Boot에서 postgre DB를 이용하여 사용자의 정보를 저장하고 있다.
그리고, 사용자 정보를 가져올때 등은 JPA를 상속받은 UserRepository.java 에서 각종 @Query가 구현되어 있다.
UPDATE 쿼리문을 호출하여 사용자의 정보를 수정하려고 하는데 UPDATE 자체는 정상적으로 동작하지만, 에러가 발생한다.
UserRepository.java
@Repository
public interface UserRepository extends JpaRepository<UserEntity, Long>{
.
.
}
RestAPI를 호출하여 UPDATE로 DB의 값을 변경한다.
@Query(value = "UPDATE [테이블명] SET [변경할 COLUMN명] = :state where [회원아이디COLUMN] =:userid", nativeQuery = true)
int setState(String userid, Long state);
근데 restapi 호출시, web에서는 500 ERROR가 springboot 콘솔에는 error가 잔뜩낀다.
update 쿼리가 반환하는 값이 없어서 뭐 문제라는데
executeUpdate 를 사용해라, int로 해서 반환하게 만들라는 등의 해결책은 많았다.
근데 내가 지금 적용하기엔 너무 .... 이해가안되고 뭔말인지 몰라서
어노테이션 적용으로 해결함
해결 방안
- @Transactional , @Modifying 어노테이션 적용하기 (import 포함)
- 반환형은 int로 설정할것
@Transactional
@Modifying
@Query(value = "UPDATE [테이블명] SET [변경할 COLUMN명] = :state where [회원아이디COLUMN] =:userid", nativeQuery = true)
int setState(String userid, Long state);
더보기
import org.springframework.transaction.annotation.Transactional;
import org.springframework.data.jpa.repository.Modifying;
728x90
반응형
'개발아닌개발 > springboot' 카테고리의 다른 글
[오류] Web server failed to start. Port 8080 was already in use. (0) | 2021.11.23 |
---|---|
Map<String, Object>의 안에 Object를 int로 바꾸는 방법 (2) | 2021.11.10 |
GetMapping 반복 - Scheduler 실습하기 (0) | 2021.11.08 |
User 내용 수정하는 PUTMapping (0) | 2021.11.08 |
[SpringBoot] 프로젝트에 hateoas 기능 사용하기 (0) | 2021.11.05 |
댓글