CrudRepository的findAll()方法返回了空值

13

我正在使用Spring Data Redis,拥有以下仓库:

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

当我调用findAll(Iterable< String> 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();

返回:

[null, null]


2
嗯...这两个调用有什么区别吗?你贴了同样的调用两次。 - Stultuske
这些调用之间有什么不同。第二个没有ids列表,所以您不需要声明null返回给您。 - Er.Er
3
春季数据Redis似乎存在一个漏洞:https://jira.spring.io/browse/DATAREDIS-570 - y.luis.rojo
截至2018年12月,我也遇到了同样的问题。有人能够解决吗? - Evdzhan Mustafa
1
现在是2020年3月,这个bug仍然没有被修复。 - ktcl
显示剩余7条评论
3个回答

0

如果你的项目不一定需要使用List,那么你可以尝试用ArrayList替换普通的List,这样会更容易创建和更新。虽然可能不起作用,但也许能让你的工作更轻松。无论如何,祝你好运!


0

你尝试过将一个空列表作为参数传递吗?你可以尝试:

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

我怀疑你需要覆盖没有参数的findAll方法,但我不确定。


-1

这基本上是适用于问题作者的相同方法。他想要获取所有记录,而不是通过任何已知ID列表进行过滤。 - Matvey Zhuravel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接