Jpa를 사용해서 비밀번호변경 기능 구현중에 에러가 났다.
modifying queries can only use void or int/Integer as return type! Offending method: public abstract java.util.Optional mood.moodmyapp.repository.JpaMemberRepository.updatePw(java.lang.String,java.lang.String)
Optional<String> updatePw(String updatePw, String userId);
이렇게 Optional로 감싼 String 타입을 반환해서 .isPresent() 로 실행여부를 체크하려고 했는데
modifying 쿼리는 void타입이거나 Integer 타입 둘 중 하나만 쓸 수 있다고 에러메세지가 떴다.
@Repository
public interface JpaMemberRepository extends JpaRepository<Member, String>, MemberRepository {
// 비워있어도 잘 작동함
// JpaRepository 인터페이스를 상속받을 때 엔티티 클래스의 타입(Member)과 PK에 해당하는 데이터 타입(String) 선언하면
//해당 엔티티 클래스와 매핑되는 테이블의 CRUD기능을 사용할 수 있다.
@Modifying(clearAutomatically = true)
@Query("UPDATE Member m SET m.userPw = :updatePw WHERE m.userId = :userId")
@Override
Optional<Integer> updatePw(String updatePw, String userId);
}
Optional<Integer> updatePw(String updatePw, String userId);
Integer 타입으로 변경해주고 실행이 잘 된다.
'Jpa' 카테고리의 다른 글
[Jpa 에러] javax.persistence.NonUniqueResultException: query did not return a unique result: 2 (0) | 2022.09.09 |
---|