Search
โš ๏ธ

@Param

ํƒœ๊ทธ
JPA

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
๋ณต์‚ฌ