gpt4 book ai didi

mongodb - QueryDsl MongoRepository 投影

转载 作者:可可西里 更新时间:2023-11-01 09:31:37 26 4
gpt4 key购买 nike

我正在使用带有 querydsl 的 mongodb 的 spring-data。我有一个存储库

public interface DocumentRepository extends MongoRepository<Document, String> ,QueryDslPredicateExecutor<Document> {}

和一个实体

@QueryEntity
public class Document {

private String id;
private String name;
private String description;
private boolean locked;
private String message;

}

我需要加载包含 ID 和名称信息的文档列表。所以只有 id 和 name 应该加载并设置在我的实体中。我认为查询投影是正确的词。支持吗?

此外,我需要实现一些延迟加载逻辑。存储库中是否有类似“跳过”和“限制”的功能?

最佳答案

这有很多方面,不幸的是,它不是一个问题,而是多个问题。

对于投影,您可以简单地使用 @Query 注释的 fields 属性:

interface DocumentRepository extends MongoRepository<Document, String>, QuerydslPredicateExecutor<Document> {

@Query(value = "{}", fields = "{ 'id' : 1, 'name' : 1 }")
List<Document> findDocumentsProjected();
}

您可以将其与查询派生机制(通过不设置 query)、分页(见下文)甚至返回子句中的专用投影类型(例如 DocumentExcerpt 只有 idname 字段。

存储库抽象完全支持分页。通过扩展基本接口(interface),您已经获得了 findAll(Pageable) 和该方法的 Querydsl 特定版本。您还可以在 finder 方法中使用分页 API,添加一个 Pageable 作为参数并返回一个 Page

Page<Document> findByDescriptionLike(String description, Pageable pageable)

reference documentation 中查看更多信息.

关于mongodb - QueryDsl MongoRepository 投影,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20522577/

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