728x90
반응형
구글링을 통해 찾아본결과
많은 예제가 SpringDataJPA여서 이걸 사용해봤다
Repository
public interface SpringDataJpaMemberRepository extends JpaRepository<MainBoard, Long> {
@Modifying
@Query("update MainBoard m set m.mainProductHit = m.mainProductHit + 1 where m.mainProductId = :id")
int updateCount(@Param("id") int id);
}
Service
private final SpringDataJpaMemberRepository springDataJpaMemberRepository;
public MainBoardService(MainBoardRepository mainBoardRepository, SpringDataJpaMemberRepository springDataJpaMemberRepository) {
this.mainBoardRepository = mainBoardRepository;
this.springDataJpaMemberRepository = springDataJpaMemberRepository;
}
public int updateHit(int id){
return springDataJpaMemberRepository.updateCount(id);
}
다른것은 일반 JPA를 사용해서
SpringDataJpaMemberRepository의 생성자를 추가했다(이름 바꿀예정)
Controller
@GetMapping("/mainProductBoard/Detail{no}")
public String boardDetail(@PathVariable int no, Model model){
MainBoard boardOne = mainBoardService.findOne(no).get();
model.addAttribute("boardOne",boardOne);
mainBoardService.updateHit(no);
return "boards/boardDetail";
}
기존 findOne을 통해 게시물 하나를 보냈는데
updateHit(no)로 Service -> repository를 거쳐 쿼리문을 실행해 조회수(mainProudctHit)가 +1 업데이트되게 구현했다
java lang IllegalStateException For queries with named parameters you need to use provide names for method parameters Use Param for query method parameters or when on Java 8 use the javac flag parameters
여기서 에러가 발생한다
@Param 어노테이션을 사용하거나 (Java 8+에서) -parameters 를 사용하라는 것
해결
public interface SpringDataJpaMemberRepository extends JpaRepository<MainBoard, Long> {
@Modifying
@Query("update MainBoard m set m.mainProductHit = m.mainProductHit + 1 where m.mainProductId = :id")
int updateCount(@Param("id") int id);
}
SpringDataRepository에 updateCount함수에 다음과 같이 @Param을 추가했다
반응형
'Spring' 카테고리의 다른 글
[SpringBoot/SpringSecurity] (0) | 2022.06.22 |
---|---|
[SpringBoot/IntelliJ] Spring Data JPA 페이징 (0) | 2022.04.18 |
[SpringBoot/IntelliJ] Mysql연동 (0) | 2022.04.14 |
[SpringBoot/IntelliJ] Thymeleaf URL표현(th:href) (0) | 2022.04.14 |
[SpringBoot/IntelliJ] MVC구조 ( 게시판 예제 ) (0) | 2022.04.14 |