gpt4 book ai didi

java - 通过数据属性使用 javax.persistence.criteria 从结果集中删除重复项

转载 作者:行者123 更新时间:2023-12-01 16:55:34 24 4
gpt4 key购买 nike

我需要返回最新的数据。日期字段称为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();
}

最佳答案

尝试按降序对所有结果进行排序并获得第一个结果,如下所示:

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(cb.desc(root.get("dateModified")));
return entityManager.createQuery(query)
.setFirstResult(0)
.setMaxResults(1)
.getResultList();
}

该方法将返回一个列表,其中一个元素具有最近的修改日期。

关于java - 通过数据属性使用 javax.persistence.criteria 从结果集中删除重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61597740/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com