Почему вы не можете использовать аннотацию @Param только для одного параметра?

#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 , тогда удалите этот параметр.