java - Spring Boot QueryDsl 返回由 : java. lang.UnsupportedOperationException 引起:null

标签 java spring-boot spring-mvc jpa spring-data

代码如下

    QContinent continent = QContinent.continent;

    JPAQuery query = new JPAQuery(entityManager);


    query.from(continent).where(continent.name.eq("www"));
    List<Object> fetch = query.fetch();

    System.err.println("===" + fetch);

这返回
引起:java.lang.UnsupportedOperationException:null
在 java.util.Collections$UnmodifiableMap.put(Collections.java:1457) ~[na:1.8.0_191]
在 com.querydsl.jpa.JPQLSerializer.visitConstant(JPQLSerializer.java:327) ~[querydsl-jpa-4.2.1.jar:na]
在 com.querydsl.core.support.SerializerBase.visit(SerializerBase.java:221) ~[querydsl-core-4.3.1.jar:na]
在 com.querydsl.core.support.SerializerBase.visit(SerializerBase.java:36) ~[querydsl-core-4.3.1.jar:na]
在 com.querydsl.core.types.ConstantImpl.accept(ConstantImpl.java:140) ~[querydsl-core-4.3.1.jar:na]

最佳答案

正如@user3388770 所建议的,原因是版本不匹配。一般来说,在您的 pom.xml/build.gradle不要为依赖项指定版本,Spring 已经提供了,除非您出于某种原因确实需要它。
您可以在此处找到使用的/兼容的依赖项:https://docs.spring.io/spring-boot/docs/2.3.1.RELEASE/reference/html/appendix-dependency-versions.html (根据您的Spring版本更改版本)
如果出现错误,您的依赖项应如下所示( build.gradle ):

plugins {
    id "org.springframework.boot" version "2.3.1.RELEASE"
    id 'io.spring.dependency-management' version '1.0.9.RELEASE'
    ...
}

apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
...

dependencies {
   annotationProcessor(
            ...
            //some put a version below before ":jpa"; dont.
            "com.querydsl:querydsl-apt::jpa"
            ...
    )

    //just an example without version numbers as they are delivered with spring boot automatically
    compile "org.springframework.boot:spring-boot-starter-web"
    compile "org.springframework.boot:spring-boot-actuator"
    ...
    compile group: 'org.apache.httpcomponents', name: 'httpclient'
    compile 'org.thymeleaf.extras:thymeleaf-extras-java8time'

    //but most importantly this below 
    compile "com.querydsl:querydsl-jpa"
}

关于java - Spring Boot QueryDsl 返回由 : java. lang.UnsupportedOperationException 引起:null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62112312/

相关文章:

java - 如何从 EnumMap 获取数组?

java - 如何从另一个服务调用 AccessibilityService 方法?

java - HTTPServletRequest getServerPort 返回 -1

java - 使用spring jpa编写动态查询的方法

spring mvc 请求的资源不可用

java - Spring 不使用默认语言环境中的源

java - 错误 : conflicting types using C in Android ndk

spring-boot - 如何使用 Spring Boot 2.0.0.M4+ 在某些环境中要求 SSL

java - org.springframework.web.client.HttpClientErrorException 400 RestTemplate.postForEntity

java - 如何使用Spring的@ExceptionHandler实现自定义错误字符串?