o meu metodo:
@Transactional(readOnly=true)
@Query(" SELECT DISTINCT obj FROM Product obj WHERE obj.name =:q AND obj.price =:max_price >= obj.price =:min_price ")
List<Product>search(@Param("q") String q,@Param("min_price") Double min_price,@Param("max_price") Double max_price);
erro:
2021-06-09 22:36:07.983 ERROR 8904 --- [ restartedMain] o.h.hql.internal.ast.ErrorTracker : right-hand operand of a binary operator was null
antlr.SemanticException: right-hand operand of a binary operator was null
Parece que está faltando um AND no seu HQL. Esse trecho está estranho:
AND obj.price =:max_price >= obj.price =:min_price
^
Bom dia, na verdade eu quero fazer uma comparação de valores, que vá do menor ao maior, deve ser erro de sintaxe, queria saber como faz.
Seria, então, uma ordenação?
Se for, tenta assim:
SELECT DISTINCT
obj
FROM
Product obj
WHERE
obj.name = :q
AND obj.price >= :min_price
AND obj.price <= :max_price
ORDER BY
obj.price
obrigado, vou testar aqui.
Em SQL você pode usar BETWEEN
para esses casos:
SELECT DISTINCT
obj
FROM
Product obj
WHERE
obj.name = :q
AND
obj.price BETWEEN :min_price AND :max_price
ORDER BY
obj.price
No caso, fazer campo BETWEEN minimo AND maximo
é equivalente a campo >= minimo AND campo <= maximo
.
massa demais, muito obrigado.