IllegalStateException ๊ณผ @Param
์๋์ ๊ฐ์ด ์ฟผ๋ฆฌ๋ฅผ ์์ฑํ๋๋
@Query("SELECT e.category, SUM(e.expenditureAmount) FROM Expenditure e WHERE e.user.id = :userId AND e.expenditureAt BETWEEN :startDate AND :endDate GROUP BY e.category")
List<Object[]> findUserExpendituresByDateAndCategory(Long userId, LocalDate startDate, LocalDate endDate);
Java
๋ณต์ฌ
IllegalStateException ์ด ์ ๋ฅผ ๋ฐ๊ฒจ์คฌ์ต๋๋ค. ์ ๊ทธ๋ฐ๊ฑธ๊น์? ๐ซ
java.lang.IllegalStateException: For queries with named parameters you need to provide names for method parameters;
Use @Param for query method parameters, or when on Java 8+ use the javac flag -parameters
at org.springframework.data.jpa.repository.query.QueryParameterSetterFactory$BasicQueryParameterSetterFactory.lambda$getName$2(QueryParameterSetterFactory.java:251) ~[spring-data-jpa-3.0.4.jar:3.0.4]
Plain Text
๋ณต์ฌ
@Query ๋ด์ JPQL ์ฟผ๋ฆฌ์์ :userId, :startDate, :endDate ๋ผ๋ ๋ช
๋ช
๋ ํ๋ผ๋ฏธํฐ๋ฅผ ์ฌ์ฉํ์ผ๋ฉด์ ๋ฉ์๋์์๋ ์ด๋ฅผ ๋ช
์์ ์ผ๋ก ์ง์ ํด์ฃผ์ง ์์๊ธฐ ๋๋ฌธ์
๋๋ค. ๋ฐ๋ผ์ ์๋์ ๊ฐ์ด ์์ ํด์ฃผ๋ฉด ์ ๋๋ก ๋์ํ๊ฒ ๋ฉ๋๋ค.
@Query("SELECT e.category, SUM(e.expenditureAmount) FROM Expenditure e WHERE e.user.id = :userId AND e.expenditureAt BETWEEN :startDate AND :endDate GROUP BY e.category")
List<Object[]> findUserExpendituresByDateAndCategory(@Param("userId") Long userId, @Param("startDate") LocalDate startDate, @Param("endDate") LocalDate endDate);
Java
๋ณต์ฌ