#java #spring #jpa
#java #spring #jpa
Вопрос:
Мне нужно создать запрос через JpaRepository, и мой метод принимает 3 параметра, но в запросе используется только 1 (другой доступен для просмотра)
Давайте предположим, что мой запрос :
@Query(
value="SELECT t FROM T t WHERE status = A AND (:B = :B) AND loginDate IS NULL",
countQuery = "SELECT COUNT(a) FROM T t WHERE status = :A AND (:B= :B) AND loginDate IS NULL")
Page<T> findAllByStatusAndLoginDateIsNull(@Param("A") A, @Param("B"), Pageable pageable )
Проблема в том, что я обязан использовать все свои параметры, поэтому я должен включить бесполезное условие :B = :B
. Есть ли более чистое решение или обходной путь?
Я знаю, что мог бы создать другой метод, который не принимает все три параметра, но, допустим, я хочу сохранить свой метод таким образом.
Комментарии:
1.
@Param("B"),
… что это? Почему здесь стоит запятая? Даже если это опечатка, зачем вам использовать@Param("B") Pageable pageable
? Нет необходимости иметь там эту аннотацию.2. Это @Param(«B»). Мне нужна аннотация, чтобы передать параметры в запрос (:B).
3. Я написал
@Param("B"),
, не@Param("B")
. У вас также нет параметра B.4. Извините, я имел в виду @Param(«B») B.
5. Затем исправьте этот метод. Нет смысла иметь метод с X параметрами, если вы не используете некоторые из них и не заботитесь о них. Если другой метод переходит
B
кfindAllByStatusAndLoginDateIsNull
, то он либо ожидает, что это будет иметь значение, таким образом, игнорированиеB
является плохим, либо его также не беспокоитB
, тогда удалите этот параметр.