Spring Data JPA findAll(Iterable <id> id)不允许重复的id

时间:2016-02-11 16:22:09

标签: spring spring-data spring-data-jpa

所以我有一个ID列表

div

当我将该列表传递给List<Integer> ids = [1,1,1,5]; 时, 而不是返回4个实体,它只返回2,ID为1.5。

有没有办法改变findAll()所以它不会删除重复项?

2 个答案:

答案 0 :(得分:3)

我认为不可能:SELECT * FROM foo WHERE id in (1, 1, 1, 5)也会返回2行,而不是4行。不是为您创建克隆对象的存储库作业。如果您需要克隆实体,只需创建一个clone method/copy constructor

答案 1 :(得分:0)

您可以在findAll完成后重建此列表,这是代码:

List<Integer> ids = [1,1,1,5];

List<Foo> fooList = fooDao.findAll(ids); // Only two objects

List<Foo> newFooList = new ArrayList<>();

for (Integer id : ids) {
    Foo f; // Find the object from the origin list using `CollectionUtils` etc.

    newFooList.add(f);
}