Можем ли мы заменить операторы равенства, больше или меньше, чем в Spring JPA @Query? - PullRequest
0 голосов
/ 07 ноября 2019

Я новичок в Spring, Springboot, JPA и застрял с одним из требований. Ниже приведен запрос:

@Query("Select re from RequiredAccountEntity re where re.debitAccNo= :debitAccNo "
          + "AND re.date<= :toDate AND re.date>= :fromDate AND re.tnxAmt tnxAmtFlag :tnxAmt ") List<RequiredAccountEntity>
          fetchAllData(@Param("debitAccNo") String debitAccNo, @Param("fromDate")
          Date fromDate, @Param("toDate") Date toDate, @Param("tnxAmt") Double tnxAmt,@Param("tnxAmtFlag") String tnxAmtFlag);

В этом я пытаюсь динамически заменить оператор «больше чем», «меньше чем» или «равно» на основе данных запроса из другого приложения.

Пожалуйста, помогите мне или направьте меня, чтобы сделать это правильно в Springboot JPA.

Заранее спасибо!

Спасибо и С уважением Шану

Ответы [ 2 ]

0 голосов
/ 07 ноября 2019

Вы можете попробовать что-то вроде:

...
where (:tnxAmtFlag = '<' and re.tnxAmt < :tnxAmt)
or (:tnxAmtFlag = '>' and re.tnxAmt > :tnxAmt)
or (:tnxAmtFlag = '=' and re.tnxAmt = :tnxAmt)
...

Если вам нужно получить все результаты, когда не указан оператор, используйте:

...
where :tnxAmtFlag is null
or (:tnxAmtFlag = '<' and re.tnxAmt < :tnxAmt)
or (:tnxAmtFlag = '>' and re.tnxAmt > :tnxAmt)
or (:tnxAmtFlag = '=' and re.tnxAmt = :tnxAmt)
...
0 голосов
/ 07 ноября 2019

Вы можете сделать это, используя просто repository-query-Keywords

List<RequiredAccountEntity> findByDebitAccNoEqualsAndDateLessThanEqualAndGreaterThanEqualAndTnxAmtEquals(String debitAccNo, Date fromDate, Date toDate, String tnxAmtFlag);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...