Поддержка Querydsl для дочерних классов - PullRequest
0 голосов
/ 31 января 2020

Я реализовал QueryDSL для Spring Boot (2.0.4.RELEASE) приложение, которое использует spring-data-mongo. Я могу запрашивать любое свойство родительского класса, но не могу запрашивать любое свойство, принадлежащее дочернему классу.

Например, допустим, у нас есть конечная точка /api/order, которая возвращает данные заказа. Order имеет свойство payment типа com.example.order.payment.PaymentMethod.

PaymentMethod имеет 2 дочерних класса, com.example.order.payment.CreditCard имеет свойство cardType & com.example.order.payment.PayPal, имеет свойство email.

Цель - получить данные, используя запрос /api/order?payment.cardType=Visa. Выполнение такого запроса возвращает следующую ошибку, которая указывает, что запрос не был правильно обработан QueryDslPredicateArgumentResolverArgument :

{
    "errors": [
        {
            "field": null,
            "errorMessage": "Predicate must not be null!"
        }
    ]
}

Однако я могу запросить любое свойство в PaymentMethod скажем, например: /api/order?payment.type=Card будет успешно получать результаты.

Мой контроллер настроен для использования QueryDslPredicate с использованием подписи ниже:

@Override
public ResponseEntity<List> getOrdersDSL(@QuerydslPredicate(root = Order.class) Predicate predicate,
            @RequestParam final MultiValueMap<String, String> parameters) { ... }

Может кто-нибудь помочь, пожалуйста, как двигаться вперед с этим?

...