Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring mvc 你知道如何实现只带来价值的视图吗​你找过了?_Spring Mvc_Spring Data Jpa_Thymeleaf - Fatal编程技术网

Spring mvc 你知道如何实现只带来价值的视图吗​你找过了?

Spring mvc 你知道如何实现只带来价值的视图吗​你找过了?,spring-mvc,spring-data-jpa,thymeleaf,Spring Mvc,Spring Data Jpa,Thymeleaf,我正在整理一个搜索页面,它使用的数据库有超过1000000个注册表。你知道如何实现只带来价值的视图吗​​你找过了?我已经能够用较小的DB300实现这一点,但是,它在搜索之前加载视图中的所有注册表。如果搜索字段为空,我需要它不返回任何内容 春季MVC、JPA、Hibernate和Thymeleaf @PersistenceContext private EntityManager manager; @SuppressWarnings("unchecked") @

我正在整理一个搜索页面,它使用的数据库有超过1000000个注册表。你知道如何实现只带来价值的视图吗​​你找过了?我已经能够用较小的DB300实现这一点,但是,它在搜索之前加载视图中的所有注册表。如果搜索字段为空,我需要它不返回任何内容

春季MVC、JPA、Hibernate和Thymeleaf


    @PersistenceContext
    private EntityManager manager;

    @SuppressWarnings("unchecked")
    @Override
    @Transactional(readOnly = true)
    public Page<Alarme> filtrar(Alarme filtro, Pageable pageable) {

        int paginaatual = pageable.getPageNumber();
        int totalRegistrosPorPagina = pageable.getPageSize();
        int primeiroRegistro = paginaatual * totalRegistrosPorPagina;

        Criteria criteria = manager.unwrap(Session.class).createCriteria(Alarme.class);
        criteria.setFirstResult(primeiroRegistro);
        criteria.setMaxResults(totalRegistrosPorPagina);

        Sort sort = pageable.getSort();
        System.out.println(">>> sort: " + sort);
        if (sort != null) {
            Sort.Order order = sort.iterator().next();
            String property = order.getProperty();
            criteria.addOrder(order.isAscending() ? Order.asc(property) : Order.desc(property));
        }

        adicionarFiltro(filtro, criteria);

        return new PageImpl<>(criteria.list(), pageable, total(filtro));
    }

    private Long total(Alarme filtro) {
        Criteria criteria = manager.unwrap(Session.class).createCriteria(Alarme.class);
        adicionarFiltro(filtro, criteria);
        criteria.setProjection(Projections.rowCount());
        return (Long) criteria.uniqueResult();
    }

    private void adicionarFiltro(Alarme filtro, Criteria criteria) {
        if(filtro != null){
            if(!StringUtils.isEmpty(filtro.getIncidente())){
                criteria.add(Restrictions.ilike("incidente", filtro.getIncidente(), MatchMode.ANYWHERE));
            }
        }

        if(filtro != null){
            if(!StringUtils.isEmpty(filtro.getSite())){
                criteria.add(Restrictions.ilike("site", filtro.getSite(), MatchMode.ANYWHERE));
            }
        }
    }

}```



当数据很大时,很难加载前面的所有数据。当搜索字段失去焦点时,您可以执行后端查询吗?

否。这是我需要做的。你能给我举个例子吗?