gpt4 book ai didi

java - 使用 Hibernate 搜索模块进行 QueryDSL 排序时出错

转载 作者:太空宇宙 更新时间:2023-11-04 11:35:49 25 4
gpt4 key购买 nike

在我的存储库类中,我尝试使用 querydsl-hibernate-search 模块(版本 4.1.4)和 Spring Data JPA(版本 1.5.2)进行查询。当我调用该方法时:

public Iterable<Incident> findAll(Predicate predicate, int offset, int limit, OrderSpecifier<?>[] orders) {
return createQuery(predicate).orderBy(orders).offset(offset).limit(limit).fetch();
}

那个电话:

private SearchQuery<Incident> createQuery(Predicate predicate) {
return new SearchQuery<>(getEntityManager().unwrap(HibernateEntityManager.class).getSession(), incident).where(predicate);
}

我收到此错误:

java.lang.NoSuchMethodError: org.apache.lucene.search.SortField.<init>(Ljava/lang/String;IZ)V

查看代码源内部,我发现了问题,类上的一个方法:LuceneSerializer,行:557:

public Sort toSort(List<? extends OrderSpecifier<?>> orderBys) {
List<SortField> sorts = new ArrayList<SortField>(orderBys.size());
for (OrderSpecifier<?> order : orderBys) {
if (!(order.getTarget() instanceof Path<?>)) {
throw new IllegalArgumentException("argument was not of type Path.");
}
Class<?> type = order.getTarget().getType();
boolean reverse = !order.isAscending();
Path<?> path = getPath(order.getTarget());
if (Number.class.isAssignableFrom(type)) {
sorts.add(new SortField(toField(path), sortFields.get(type), reverse));
} else {
sorts.add(new SortField(toField(path), sortLocale, reverse));
}
}
Sort sort = new Sort();
sort.setSort(sorts.toArray(new SortField[sorts.size()]));
return sort;
}

类 SortField 的构造方法参数不正确:

sorts.add(new SortField(toField(path), sortFields.get(type), reverse));

在我看来,这是querydsl-hibernate-seach和lucene之间的版本冲突问题。

最佳答案

据我所知here , querydsl-hibernate-search 依赖于 Hibernate Search 的旧版本 (4.2.0.Final)。我不希望它与 Hibernate Search 5.5.6 一起使用。

自 4.2.0.Final 以来发生了很多事情,所以我认为你只有两个选择:

您可以按原样使用querydsl-hibernate-search,但它会强制您使用非常旧版本的 Hibernate Search ( not even on the migration guide anymore ),这会顺便强制您使用旧版本的 Hibernate ORM,依此类推...

关于java - 使用 Hibernate 搜索模块进行 QueryDSL 排序时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43300167/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com