根据数据属性,使用javax.persistence.criteria从结果集中删除重复项

问题描述 投票:0回答:1

我需要返回最新数据。日期字段称为dateModified。由于不会以任何方式删除旧数据,因此有很多类似的记录,它们的区别仅在于dateModified字段。当前查询返回所有记录,我只需要字段dateModified中的最新记录。

    public List<SomeDto> search(SearchDto criteria) {
            final CriteriaBuilder cb = entityManager.getCriteriaBuilder();
            final CriteriaQuery<SomeDto> query = cb.createQuery(SomeDto.class);
            final Root<SomeModel> root = query.from(SomeModel.class);
            query.multiselect(
                 root.get(ID),
                 root.get(SOME_ENTERNAL_ID),
                 root.get(SOME_NAME_ID));
                 query.where(createPredicates(cb, query, root, criteria));
    return entityManager.createQuery(query).getResultList();
}
java hibernate spring-boot spring-data-jpa criteria-api
1个回答
0
投票
public List<SomeDto> search(SearchDto criteria) { final CriteriaBuilder cb = entityManager.getCriteriaBuilder(); final CriteriaQuery<SomeDto> query = cb.createQuery(SomeDto.class); final Root<SomeModel> root = query.from(SomeModel.class); query.multiselect( root.get(ID), root.get(SOME_ENTERNAL_ID), root.get(SOME_NAME_ID)); query.where(createPredicates(cb, query, root, criteria)) .orderBy(desc(root.get("dateModified"))); return entityManager.createQuery(query) .setFirstResult(0) .setMaxResults(1) .getResultList(); }

该方法将返回一个列表,其中包含一个具有最新dateModified的元素。

© www.soinside.com 2019 - 2024. All rights reserved.