甘小蔗 2021-08-05 16:00 采纳率: 0%
浏览 284

Springboot jpa 查询问题 count方法编译报错

问题简览:

SpringBoot+JPA,Pageable+Specification:
Page users = userRepository.findAll(query, pageable);
Long pageTotal = userRepository.countAll(query);
其中 usersfindAll 正常运行,但添加 countAll 之后,直接编译报错:

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'adminController': Unsatisfied dependency expressed through field 'userRepository'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userRepository' defined in com.gxnmgcy.repository.UserRepository defined in @EnableJpaRepositories declared on JpaRepositoriesRegistrar.EnableJpaRepositoriesConfiguration: Invocation of init method failed; nested exception is org.springframework.data.repository.query.QueryCreationException: Could not create query for public abstract java.lang.Long com.gxnmgcy.repository.UserRepository.countAll(org.springframework.data.jpa.domain.Specification)! Reason: Failed to create query for method public abstract java.lang.Long com.gxnmgcy.repository.UserRepository.countAll(org.springframework.data.jpa.domain.Specification)! No property countAll found for type User!; nested exception is java.lang.IllegalArgumentException: Failed to create query for method public abstract java.lang.Long com.gxnmgcy.repository.UserRepository.countAll(org.springframework.data.jpa.domain.Specification)! No property countAll found for type User!

AdminController:

        // 排序
        Sort sort = Sort.by(Sort.Direction.DESC, "id");
        Pageable pageable = PageRequest.of(page-1, pageSize, sort);
        // 动态查询
        Specification<User> query = (root, criteriaQuery, criteriaBuilder) -> {
            List<Predicate> predicates = new ArrayList<>();

            predicates.add(criteriaBuilder.equal(root.get("type"), 1));

            if (name != null && !"".equals(name)) {
                predicates.add(criteriaBuilder.like(root.get("realName"), "%"+name+"%"));
            }
            if (phone != null && !"".equals(phone)) {
                predicates.add(criteriaBuilder.like(root.get("phone"), "%"+phone+"%"));
            }
            if (idCard != null && !"".equals(idCard)) {
                predicates.add(criteriaBuilder.like(root.get("idCard"), "%"+idCard+"%"));
            }

            criteriaQuery.where(criteriaBuilder.and(predicates.toArray(new Predicate[predicates.size()])));
            criteriaQuery.orderBy(criteriaBuilder.desc(root.get("id")));
            return criteriaQuery.getRestriction();
        };

        // 多条件查询
        Page<User> users = userRepository.findAll(query, pageable);
        Long pageTotal = userRepository.countAll(query);

UserRepository:

public interface UserRepository extends JpaRepository<User, Integer>

  Page<User> findAll(Specification<User> query, Pageable pageable);
  Long countAll(Specification<User> query);

}

拓展

此外,若获取到 pageTotal 后,若想组装数据回前端:{count:pageTotal, list:users},我的做法是:

PageView pageView = new PageView(pageTotal, users.getContent());

@Data
class pageView {
  private Long pageTotal;
  private List<Map> list;
}

但此时ide会报红,需单独创建 setList 方法:public void setList(List content) {}
请问这里的 List 为什么不能装进 Map 呢

  • 写回答

1条回答 默认 最新

  • CSDN专家-sinJack 2021-08-05 16:22
    关注

    No property countAll found for type User!
    countAll方法中没发现User类型。
    UserRepository实现的是哪个接口。。。

    评论

报告相同问题?

问题事件

  • 修改了问题 8月5日
  • 创建了问题 8月5日

悬赏问题

  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制
  • ¥20 usb设备兼容性问题
  • ¥15 错误(10048): “调用exui内部功能”库命令的参数“参数4”不能接受空数据。怎么解决啊
  • ¥15 安装svn网络有问题怎么办