Я хочу использовать JPA-спецификацию для реализации SQL с участием groupby и где в - PullRequest
0 голосов
/ 24 марта 2020

Я хочу реализовать SQL:

SELECT
    * 
FROM
    tableName 
WHERE
    (a,b,c) IN (
SELECT
    max(createTime),a,b,c
FROM
tableName 
GROUP BY
    a,b,c)

Мои текущие результаты:

repository.findAll((Specification<PO>) (root, criteriaQuery, criteriaBuilder) -> {
            Subquery<Number> subquery = criteriaQuery.subquery(Number.class);
            Root<PO> from = subquery.from(PO.class);
            subquery.select(criteriaBuilder.max(from.get("createTime")));
            subquery.groupBy(from.get("a"), from.get("b"), from.get("c"));
            CriteriaBuilder.In<Object> house = criteriaBuilder.in(root.get("a")).value(subquery);

            return criteriaBuilder.and(house);
        });

Однако оператор, сгенерированный таким образом, отличается от того, что я хочу , что неправильно, я не знаю, как достичь своей цели

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