【问题标题】:findAll() method of CrudRepository is returning null valuesCrudRepository 的 findAll() 方法返回空值
【发布时间】:2018-06-01 15:41:33
【问题描述】:

我正在使用 Spring 数据 Redis 并拥有以下存储库:

public interface MyClassRepository extends CrudRepository<MyClass, String> {
}

当我调用findAll(Iterable&lt; String&gt; ids) 方法时,返回正确的数据:

final List<String> ids = Lists.newArrayList("id1", "id2");
final Iterable<MyClass> mappingIterable = mappingRepository.findAll(ids);

但是,调用 findAll() 不会返回数据,而是针对 Redis 中存在的每个 id 返回 null 值:

final Iterable<MyClass> mappingIterable = mappingRepository.findAll();

返回:

[空,空]

【问题讨论】:

  • ehm ...这两个电话有什么区别?您两次发布了相同的电话。
  • 这些调用有什么不同。第二个没有 ids 列表,所以你不声明 null 返回给你
  • @Stultuske 抱歉,请立即查看
  • 似乎是 Spring Data Redis 的一个 bug:jira.spring.io/browse/DATAREDIS-570
  • 2020年3月了,bug还没修复

标签: java crud spring-data-redis


【解决方案1】:

【讨论】:

  • 这与问题作者的方法基本相同。他想要的是获取所有记录,而不是通过任何已知 id 列表进行过滤。
【解决方案2】:

如果您的项目不需要仅使用 List,您可以尝试将普通 List 替换为 ArrayList,这将更容易创建和更新。它可能不起作用,但可以使您的工作更轻松。总之,祝你好运!

【讨论】:

    【解决方案3】:

    您是否尝试过将空列表作为参数传递?你可以试试:

    repo.findAll(new ArrayList<>());
    

    我怀疑您需要在没有参数的情况下覆盖 findAll,但我不确定。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-06-06
      • 2020-04-16
      • 1970-01-01
      • 2021-05-20
      • 2015-10-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多