u014353911
wuruize888
采纳率88.2%
2018-06-03 00:22

关于jpa分页查询的问题,谢谢解答

40
 @Override
    public Page<Auth> getAllAuth(Integer pageNum, Integer pageSize) {

        Sort sort = new Sort(Sort.Direction.ASC, "sort");
        Pageable pageable = PageRequest.of(pageNum, pageSize, sort);
        Specification<Auth> authSpecification = new Specification<Auth>() {
            @Override
            public Predicate toPredicate(Root<Auth> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
                query.select(root.get("authID").get("authName").get("parentDataBase").get("onSqlTableName").get("authAddress").get("remark").get("authClassType"));/

                                /我想限制输出字段,如果不加这条是全部输出。加了这条报错 Illegal attempt to dereference path source [null.authID] of basic type; nested exception is java.lang.IllegalStateException: Illegal attempt to dereference path source [null.authID] of basic type
//另外如果我想在最终输出上增加一个自定义字段,有没有官方的方法可以用?谢谢各位帮忙
                                query.groupBy(root.get("parentAddr"));
                query.where(cb.equal(root.get("authClassType").as(String.class), "1"));
                query.orderBy(cb.desc(root.get("sort").as(Integer.class)));
                return query.getGroupRestriction();
            }
        };

        Page<Auth> page = authRepository.findAll(authSpecification, pageable);
        System.err.println(page);
        return page;

    }
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

3条回答

  • qq_37962402 生如夏花帅 3年前
    List<PostMessage> postMessageList = postMessagePage.getContent();
        postMessageList.forEach(postMessage -> dtoList.add(transPostToDto(postMessage)));
    
                  private PostMessageDto transPostToDto(PostMessage postMessage){
        PostMessageDto dto = new PostMessageDto();
        BeanUtils.copyProperties(postMessage, dto,"content");
    
        return dto;
    }
        这是我写的类似的
    
    点赞 评论 复制链接分享
  • ultimatech_key ultimatech_key 3年前

    a 返回的是实体类, 所有会包含实体类所有的字段,这个是没有办法的.但是你可以在外面另外定义一个Dto类(和实体类差不多),这个是工具类

    点赞 评论 复制链接分享
  • qq_37962402 生如夏花帅 3年前

    jpa 返回的是实体类, 所有会包含实体类所有的字段,这个是没有办法的.但是你可以在外面另外定义一个Dto类(和实体类差不多),这个是工具类,你可以网上搜一个
    这个类的作用.然后在这个类里面定义你需要的字段,把page.getContent返回的实体类的字段赋值给这个dto类,然后返回给dto就可以了.我原来做过,就是这样解决的.
    希望可以帮到你!

    点赞 评论 复制链接分享

为你推荐