Запрос данных Spring DATA с указанным c условием - PullRequest
1 голос
/ 02 марта 2020

Я пытаюсь получить учетную запись со списком договоров со статусом 'CA' или 'CCR' , я попробовал запрос ниже, и он работает.

Проблема в том, что я хотел бы добавить условие к моему запросу, чтобы получить счета с противоположными контрактами разных типов.

Два противоположных контракта - это два контраста с разным типом. (Один контракт H и другой контракт A )

Поддерживаемые типы: Страхование жилья и автострахование ( H и A ).

@Query("select a from Account a full join a.contracts c join c.refStatusContract r where a.id=:id AND r.cdStatutContrat in ('CA','CCR')")
    Account getAccountHavingContractStatusActifOrInProcessOfTermination(@Param("id") long id);

Моя потребность:

Я хочу проверить, существуют ли два контракта, прикрепленные к Учетная запись в моей базе данных, где два контракта являются противоположными, а статус авторизованного контракта - «CA» или «CCR».

1 Ответ

1 голос
/ 02 марта 2020

Не уверен, правильно ли я понял вашу проблему

Итак, вы хотите Счета, которые:

  1. Имеют контракты со статусом 'CA' или 'CCR'
  2. Имеют как минимум 2 контракта, один с типом H и другой с типом A

Это то, что вам нужно?

@Query("select a 
        from Account a 
        full join a.contracts c 
        join c.refStatusContract r 
        where a.id=:id 
            AND r.cdStatutContrat in ('CA','CCR') 
            AND c.contractType in ('H', 'A')
        GROUP BY a
        having count(distinct c.contractType) > 1")
Account getAccountHavingContractStatusActifOrInProcessOfTermination(@Param("id") long id);

Это то, что вам нужно?

...