Я предполагаю, что вы используете JPA, вероятно, в спящем режиме. Вы можете включить ведение журнала (для hibernate это "org.hibernate.sql" для отладки). Таким образом, вы можете увидеть сгенерированный запрос, который может помочь вам в их отладке.
Глядя на ваш код, ваша окончательная спецификация будет выглядеть примерно так:
Specifications.where(
Specifications.where(JitOrderItemSpecification.findAll())
.and(
Specifications.where(JitOrderItemSpecification.findAll())
.or(JitOrderItemSpecification.filterByJitOrderQuantityGreaterThan(0))
.or(Specifications.where(JitOrderItemSpecification.findAll()).and(JitOrderItemSpecification.filterByProductVerified(false)))
)
)
.and(JitOrderItemSpecification.filterBySku(sku));
Вы в основном запрашиваете следующее (только предложение WHERE):
(
ALL JitOrderItems
AND
(
ALL JitOrderItems
OR
OrderQuantityGreaterThan 0
OR
(
ALL JitOrderItems
AND
ProductVerified false
)
)
)
AND
JitOrderItemSpec.filterBySku(sku)
Вероятно, вам нужно следующее:
Specifications.where(
JitOrderItemSpecification.filterByJitOrderQuantityGreaterThan(0).or(JitOrderItemSpecification.filterByProductVerified(false)))
.and(JitOrderItemSpecification.filterBySku(sku));