当前位置: 首页 > 知识库问答 >
问题:

爪哇Spring: 蒙戈存储库计数() 和查找全部()

孟泽宇
2023-03-14

我注意到mongo的Spring数据中有一些奇怪的东西:

MongoRepository扩展了CrudRepositoryfindAll()方法时,返回一个Iterable。

class CrudRepository {

  ...

  Iterable<T> findAll();

  long count();
}

在mongo < code > mongo repository 中,< code>findAll()方法返回一个< code >列表:

class MongoRepository extends CrudRepository {

  ...  

  @Override
  List<T> findAll();
}

但是< code>List#size()返回一个< code>int,而< code > MongoRepository # count()方法返回一个long类型。

当集合超过Integer时会发生什么。最大值!?我们还能打电话给列表吗

共有2个答案

艾宏远
2023-03-14

java.util.List#size javadoc:

返回此列表中元素的数量。如果此列表包含多于Integer.MAX_VALUE元素,则返回Integer.MAX_VALUE

因此,当集合大小超过Integer.MAX_VALUE时,size方法将返回Integer.MAX_VALUE

我们还能调用List吗?

可以,但最有可能的情况是调用失败,并显示< code>OutOfMemoryError

东郭宏朗
2023-03-14

我喜欢你的观点:)基于你对这个问题的提问,这个问题看起来很相似。

正如它在Java语言规范中提到的:15.10.1。数组创建表达式:

每个维度表达式都经过一元数字提升(§5.6.1)。升级的类型必须为int,否则会发生编译时错误。

由于维度必须是一个 int,我们可以在数组中存储最大大小 2,147,483,648,并且还考虑到 ArrayList 只不过是数组,我们不能存储超过 INTEGER。MAX_VALUE数组列表中。(当然,List 的不同实现可能表现不同)

Spring Data JPA允许您定制查询方法。你总是可以创建一个返回类型可迭代的查询方法。

@Override
Iterable<T> findAll();
 类似资料:
  • 我使用mongoDB通过一个spring web应用程序存储和查询近50万条记录(没有固定模式的大型Json文件)。简单的基于K-V对的查找查询只需几秒钟。我正在寻找将搜索时间缩短到 由于存储文件的性质,索引对我不起作用。我正在寻找替代方案,并遇到了分片。但是,我没有找到很好的教程来解释如何为我现有的spring-mongo应用程序设置分片。 有人能给我一个好的解释吗?此外,任何其他优化搜索时间的

  • 目前我正在开发一个应用程序,允许用户创建一个模板并将其生成为DOCX文件。应用程序需要能够在用户创建模板时向用户显示模板中的更改。 我尝试的方法是使用DOCX4J库(允许操作DOCX文件)和ICEPDF,后者主要用于通过将DOCX首先转换为PDF文件来将其显示到swing组件中。现在,这种方法的问题是加载速度非常慢,DOCX文件中发生的一些更改没有反映在PDF转换中(例如:虚线下划线、字体更改)。

  • 问题内容: 我有这个Java代码段。我是Java的菜鸟。 错误: 码: 问题答案: 是的,这是问题所在: 在课程的最高级别,您只能拥有: 实例初始化程序块() 静态初始值设定块() 变量声明 构造函数声明 方法声明 嵌套类型声明 终结器声明 这些都不是。如果你 的意思 来声明一个变量,你应该这样做: 如果这 不是 您想要的,则应解释您的意图。 编辑:修复此问题后,此编译器错误似乎很明显: Conf

  • 我已经红色了多篇文章和讨论,但我仍然有一些不确定性:我不确定是否应该使用或任何其他类型来存储预订-在“在线预订”的意义上(因此来自不同国家/时区的参与者需要在时间线上的同一时刻会面)。我倾向于使用,因为DB和Backend设置为UTC,并且由于传入的“创建预订”json消息包含ISO 8601(带偏移量)start DateTime 让我们采用以下设置:1.数据库(UTC、Oracle、MSSQL

  • 我的问题是关于cucumber特性文件的并行执行。在Selenium Java中,可以通过一个runner类并行运行多个cucumber特性文件吗? 我尝试过不同的方法,但都没有成功。

  • 对于方法,如果我发送空白,它可以工作,但值为null。而且,要搜索的字段太多了。所以我正在寻找一种更好的方法来搜索这样的表单。在Grails框架中,我可以为此创建名称,但在中没有找到更好的方法。 有什么想法吗?谢了。