gpt4 book ai didi

java - Spring Data JPA QueryDslPredicateExecutor 找到不同的结果

转载 作者:行者123 更新时间:2023-11-30 09:00:36 24 4
gpt4 key购买 nike

我有一个基于 Spring Data 和 JPA QueryDSL 的项目,其中我有许多扩展 QueryDslPredicateExecutor 的存储库接口(interface),如下所示:

public interface ProductRepository extends JpaRepository<Product, Long>,
QueryDslPredicateExecutor<Product> {
}

我在整个应用程序中使用 BooleanExpression 执行 findAll() 查询以获取数据。但是,我现在需要找到基于特定列的查询的不同结果。

在某些情况下,我还使用投影和自定义存储库来根据 this post 选择特定列.

有没有一种方法可以select distinct,这样我就可以根据上述任何一种方法只获取查询的特定列的不同值?

最佳答案

今天我遇到了同样的问题,似乎没有直接的存储库方法来解决它。

我结束了使用 Querydsl为了完成我想要的:能够使用 Page<T> findAll(Predicate var1, Pageable var2);使用不同的。

一个简单的片段:

public Page<LocalizedMessage> findAll(Predicate predicate, Pageable pageable) {
QMessage qMessage = QMessage.message;

Querydsl querydsl = new Querydsl(entityManager, new PathBuilder<>(Message.class, qMessage.getMetadata()));
JPAQuery countQuery = querydsl.createQuery(qMessage).distinct().where(predicate);
JPAQuery query = querydsl.createQuery(qMessage).distinct().where(predicate);
querydsl.applyPagination(pageable, query);
return PageableExecutionUtils.getPage(query.fetch(), pageable, countQuery::fetchCount);
}

此代码基于QuerydslJpaRepositoryfindAll(Predicate, Pageable)方法。我认为扩展此存储库以添加 findAllDistinct 可能很容易使用 JPQLQuery.distinct() 的方法.

我已经提交了 feature request at spring-data's JIRA .

希望这对某人有帮助。

关于java - Spring Data JPA QueryDslPredicateExecutor 找到不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26712275/

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