首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TREATED_PATH : querydsl: querydsl

TREATED_PATH : querydsl: querydsl
EN

Stack Overflow用户
提问于 2021-06-24 20:34:23
回答 1查看 658关注 0票数 1

springboot版本是2.51,java vsersion1.8它将在selectFrom()中崩溃,错误信息: java.lang.NoSuchFieldError: TREATED_PATH

如何解决这个问题,我在web上找不到一个方法。

这是我的代码

代码语言:javascript
复制
@SpringBootTest
class Demo4ApplicationTests {
    @Resource
    private BmsPostRepository bm;
    @Autowired
    private JPAQueryFactory queryFactory;
    @Test
    void contextLoads() {
        var tab="hot";
        var page = PageRequest.of(pageNo, pageSize);
        var t = QBmsPost.bmsPost;
        var u = QUmsUser.umsUser;
        var now = new Date();
        var tomorrow = DateUtils.addDays(now, 1);
        var query = queryFactory
                .selectFrom(t)
                .leftJoin(u)
                .on(t.userId.eq(u.id));
        if (tab.equals("hot")) query = query.where(t.createTime.lt(tomorrow));
        var re = (!tab.equals("hot")) ?
                query.orderBy(t.createTime.desc()) :
                query.orderBy(t.view.desc(), t.createTime.desc());
        var er =re.fetch();
    }

}

有依赖关系

代码语言:javascript
复制
    <dependency>
            <scope>compile</scope>
            <groupId>com.querydsl</groupId>
            <artifactId>querydsl-jpa</artifactId>
            <version>5.0.0.M1</version>
        </dependency>

        <dependency>
            <scope>provided</scope>
            <groupId>com.querydsl</groupId>
            <artifactId>querydsl-apt</artifactId>
            <version>5.0.0.M1</version>
        </dependency>
代码语言:javascript
复制
java.lang.NoSuchFieldError: TREATED_PATH

    at com.querydsl.jpa.JPQLTemplates.<init>(JPQLTemplates.java:147)
    at com.querydsl.jpa.JPQLTemplates.<init>(JPQLTemplates.java:51)
    at com.querydsl.jpa.JPQLTemplates.<clinit>(JPQLTemplates.java:46)
    at com.querydsl.jpa.impl.JPAProvider.<clinit>(JPAProvider.java:59)
    at com.querydsl.jpa.impl.JPAQuery.<init>(JPAQuery.java:48)
    at com.querydsl.jpa.impl.JPAQueryFactory.query(JPAQueryFactory.java:138)
    at com.querydsl.jpa.impl.JPAQueryFactory.select(JPAQueryFactory.java:72)
    at com.querydsl.jpa.impl.JPAQueryFactory.selectFrom(JPAQueryFactory.java:102)
    at com.example.demo.Demo4ApplicationTests.contextLoads(Demo4ApplicationTests.java:31

BmsPost.java

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-19 21:26:28

您有混合版本的querydsl。我猜您使用的是querydsl-core版本4.4.x,而您的querydsl-jpa版本是5.0.0.M1。(这可能是由spring-boot启动库引起的。)

无论如何,这可以通过显式地添加正确版本的querydsl-core作为依赖项来轻松修复。

代码语言:javascript
复制
<dependency>
    <groupId>com.querydsl</groupId>
    <artifactId>querydsl-core</artifactId>
    <version>5.0.0.M1</version>
</dependency>
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68115868

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档