@Repository
public interface CouponRepository extends JpaRepository<Coupon, Long>, CouponRepositoryCustom {
@Query("SELECT c FROM Coupon c WHERE (c.issuedBy = :company OR c.issuedBy = '관리자') AND c.validTo >= :today")
List<Coupon> findValidCouponsByCompanyOrAdmin(@Param("company") String company, @Param("today") LocalDate today);
}
기능 설명
- 인터페이스 선언
CouponRepository는JpaRepository<Coupon, Long>을 상속하여 기본 CRUD 기능 제공- 추가로
CouponRepositoryCustom을 상속해 커스텀 쿼리 메서드를 함께 사용할 수 있도록 설정@Repository애노테이션으로 스프링 빈으로 등록되며 예외 변환 등 스프링 데이터 JPA 지원이 활성화
findValidCouponsByCompanyOrAdmin@Query("SELECT c FROM Coupon c WHERE (c.issuedBy = :company OR c.issuedBy = '관리자') AND c.validTo >= :today") List<Coupon> findValidCouponsByCompanyOrAdmin(@Param("company") String company, @Param("today") LocalDate today);
- 기능: JPQL(@Query) 사용
- 쿠폰 발행자(
issuedBy)가 지정된company이거나"관리자"인 경우- 그리고
validTo(유효기간)가today(오늘 또는 이후)인 쿠폰만 조회- 파라미터
@Param("company") String company: 조회할 회사명@Param("today") LocalDate today: 오늘 날짜 (유효기간 검사 기준)- 반환값:
List<Coupon>
- 조건에 맞는 쿠폰들을 리스트 형태로 반환