Spring Data JPA использует фильтры Pageable и Predicate в аннотированном методе репозитория @Query. - PullRequest
0 голосов
/ 20 ноября 2018

У меня есть пользовательское DTO:

@Data
@AllArgsConstructor
public class SaleCreditsSearchDto {
    private UUID ticketUuid;
    private UUID saleUuid;
    private String saleType;
    private Long ticketNumber;
    private LocalDateTime date;
    private Double amount;
    private Double saleTotalAmount;
    private String customerName;
    private String accountName;
}

И запрос в моем репозитории, который возвращает мне коллекцию страниц со следующими:

public interface SaleRepository
        extends CrudRepository<Sale, UUID> {

    @Query("SELECT new com.company.myproject.web.dto.SaleCreditsSearchDto("
            + "ticket.id, sale.id, sale.type, ticket.number, ticket.date, credit.amount, CONCAT(customer.lastname, ' ', customer.firstname), account.title)"
            + " FROM Sale sale"
            + " JOIN sale.ticket ticket"
            + " JOIN sale.credit credit"
            + " JOIN sale.customer customer"
            + " LEFT JOIN sale.account account"
            + " WHERE ticket.idEntity= :identity"
            + " AND ticket.date>= :datebegin"
            + " AND ticket.date< :dateend"
            + " AND ticket.state = 'FINISHED'"
            + " AND credit.initialAmount > 0"
            + " GROUP BY ticket.id, sale.id, credit.initialAmount, customer.lastname, customer.firstname, account.title")
    Page<SaleCreditsSearchDto> findTotalCredits(@Param("identity") String identity,
                                                @Param("datebegin") LocalDateTime dateBegin,
                                                @Param("dateend") LocalDateTime dateEnd,
                                                Predicate<SaleCreditsSearchDto> predicate,
                                                Pageable pageable);
}

Но методы @Query не принимают большепараметры, чем @Param и объект Pageable, поэтому я не могу передать ни реализацию спецификации, ни предикат.

Что бы вы мне предложили, чтобы я продолжал возвращать страницу, но с возможностью фильтрации по некоторым полямизвлечено в предложении SELECT?

Реализовать мой собственный метод репозитория?Передача фильтра в переменную @Query?Вы практиковали что-то подобное раньше?Спасибо:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...