【问题标题】:Spring Boot QueryDsl java.lang.UnsupportedOperationExceptionSpring Boot QueryDsl java.lang.UnsupportedOperationException
【发布时间】:2021-06-10 07:12:18
【问题描述】:
    //Page<Board> result = (Page<Board>) repo.findAll();
    Page<Board> result = repo.findAll(builder, pageable);
    System.out.println("넘어오긴했음");
    System.out.println("PAGE SIZE : "+result.getSize());
    System.out.println("TOTAL PAGES : " + result.getTotalPages());
    System.out.println("TOTAL COUNT : "+ result.getTotalElements());
    System.out.println("NEXT : "+result.nextPageable());
    
    //List<Board> list =new ArrayList<Board>(result.getContent());

    //list.forEach(b -> System.out.println(b));

它返回 java.lang.UnsupportedOperationException

如何使用 findall 方法获取 Page?

这里说的最多的编辑

List<Board> list = result.getContent();

List<Board> list =new ArrayList<Board>(result.getContent());   

但是我的问题发生了

Page<Board> result = repo.findAll(builder, pageable);

这是痕迹

java.lang.UnsupportedOperationException
at java.util.Collections$UnmodifiableMap.put(Collections.java:1459)
at com.querydsl.jpa.JPQLSerializer.visitConstant(JPQLSerializer.java:327)
at com.querydsl.core.support.SerializerBase.visit(SerializerBase.java:221)
at com.querydsl.core.support.SerializerBase.visit(SerializerBase.java:36)
at com.querydsl.core.types.ConstantImpl.accept(ConstantImpl.java:140)
at 
com.querydsl.core.support.SerializerBase.handle(SerializerBase.java:122)
at com.querydsl.core.support.SerializerBase.visitOperation(SerializerBase.java:301)
at com.querydsl.jpa.JPQLSerializer.visitOperation(JPQLSerializer.java:422)
at com.querydsl.core.support.SerializerBase.visit(SerializerBase.java:262)
at com.querydsl.core.support.SerializerBase.visit(SerializerBase.java:36)
at com.querydsl.core.types.OperationImpl.accept(OperationImpl.java:83)
at com.querydsl.core.support.SerializerBase.handle(SerializerBase.java:122)
at com.querydsl.core.support.SerializerBase.visitOperation(SerializerBase.java:298)

【问题讨论】:

  • 确切的堆栈跟踪是什么?究竟是什么引发了UnsupportedOperationException
  • 我添加了我的异常跟踪。谢谢!

标签: java spring-boot jpa querydsl


【解决方案1】:

我认为findAll 可以接受Pageable 参数,

Page<Board> findAll(Pageable pageable);

这与QueryDSL无关。

检查我的samples of Spring Data JPA/QueryDSL(你应该自己更新到最新的Spring)。

【讨论】:

    【解决方案2】:

    在 PagingAndSortingRepository findAll 方法中只允许 Pageable 参数

    public interface PagingAndSortingRepository<T, ID> extends CrudRepository<T, ID> {
      Iterable<T> findAll(Sort var1);
    
      Page<T> findAll(Pageable var1);
    }
    

    所以如果你想要 findAll 方法返回 Pagequerydsl 与 builder
    然后像这样扩展 CustomRepository custom-implementation-of-intermediate-repository-in-spring-data

    【讨论】:

      猜你喜欢
      • 2020-09-18
      • 2014-05-11
      • 2018-09-10
      • 1970-01-01
      • 2017-09-02
      • 1970-01-01
      • 1970-01-01
      • 2020-01-18
      • 2016-10-10
      相关资源
      最近更新 更多