Я реализовал 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) { ... }
Может кто-нибудь помочь, пожалуйста, как двигаться вперед с этим?