JpaSpecificationExecutor通过组和最大日期值拟合数据

时间:2018-12-05 13:58:10

标签: spring-boot spring-data-jpa spring-data specifications

我正在尝试使用JpaSpecificationExecutor过滤条件为groupBy和Max Date的数据。

当前,要获得输出,我正在使用基于排名的查询。在我的数据库中,有很多记录(成千上万条记录)。获取查询结果花费的时间太长。我了解通过使用JpaSpecificationExecutor,我们可以更快地获取数据。

SELECT * FROM (SELECT *, Rank() over (Partition BY code ORDER BY dateTime DESC ) AS Rnk FROM user) pd WHERE Rnk <= 1

请帮助我在jpa规范中实施相同的标准, 我在下面附加了示例表图像,现有表和预期输出。

实体类

Class User{
    private Long id;
    private String code;
    private String dateTime;
}

存储库界面

public interface UserRepository extends JpaRepository<User, Long>, JpaSpecificationExecutor<User>{}

用户规范类

public class UserSpecification implements Specification<User>{

    private final User criteria;

     public UserSpecification(User criteria) {
            this.criteria=criteria;
        }

    @Override
    public Predicate toPredicate(Root<User > root, CriteriaQuery<?> query, CriteriaBuilder criteriaBuilder) {
        // TODO Auto-generated method stub
        return null;
    }
    }

服务等级

public class UserService {

    pubilic List<User> findAll(){
        Specification<User> spec = new UserSpecification();
        List<User>  users = userRepository.findAll(spec);
    }
}

表格数据

Existing sample Data

预期产量 Expected Output

0 个答案:

没有答案