【发布时间】:2017-05-29 20:18:22
【问题描述】:
我目前正在处理一个使用 SpringBoot 的项目。
我使用 Hibernate 创建了一个名为 configuration_documents 的表格。这个表可以存储我创建的不同类型的文档对象。
我创建的文档对象之一是索引,我想检索索引数据,所以我创建了一个这样的存储库:
public interface IndexRepository extends CrudRepository<Index, Long> {
}
我知道配置文档表应该只有一个索引条目,否则只返回表中的第一个索引。实现这一点的最佳方法是什么?
在不修改 IndexRepository 的情况下,我目前正在考虑这样的事情(IndexRepository 是自动插入的):
StreamSupport.stream(this.configurationRepository.findAll().spliterator(), false).
map(
return Index;
).//A Collector here perhaps?
谢谢。
【问题讨论】:
-
所以如果我没看错的话,你可以在同一个表中拥有不同的配置文档类型,对吧?
-
@NiVeR 是的,对于每个文档,我都有一个不同的存储库。谢谢。
-
使用 findAll() 意味着您将把该类型的所有文档提取到内存中,然后对它们进行操作。通常最好选择要在查询中获取的文档。例如,如果您的表有 50,000 个文档,其中 10,000 个是 Index 类型,并且您对其中 1 个感兴趣,那么最好只获取那个文档而不是 10,000 或 50,000 个文档。要使用 Spring 执行此操作,您将使用 findBy... 方法。如果您提供表和实体定义,我可以向您展示如何做到这一点。
标签: java hibernate spring-boot repository