Crud Repository有saveAll方法吗?

时间:2018-01-30 15:34:44

标签: spring-data-jpa

我正在尝试将CRUDRepository用于我的开发项目。我在很多帖子中都看到CRUD Repository支持saveAll方法,该方法允许在数据库中保存对象列表。但是当我使用它时,它给了我一个错误,找不到saveAll属性 这是详细的错误

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'BinaryPartCRUDRepository': Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Failed to create query method public abstract java.util.List xxx.xxx.xx.xxxx.repository.BinaryPartCRUDRepository.saveAll(java.util.List)! No property saveAll found for type BinaryPart!

这是我的代码。

       public interface BinaryPartCRUDRepository extends CrudRepository<BinaryPart, Long> {
       BinaryPart save(BinaryPart binaryPart);
       List<BinaryPart> saveAll(List<BinaryPart> binaryParts);
    }

保存功能正在运行。但是SaveAll不是。 我还尝试使用Persistence管理器进行批量保存。但在进行JUnit测试时有null对象。所以我更喜欢留在CRUD Repository。感谢任何建议。

2 个答案:

答案 0 :(得分:0)

private int del(File file, String text) throws IOException { int counter = 0; String line = null; File[] fajllat = file.listFiles((File f) -> f.isFile() && f.canRead()); for (File f : fajllat) { FileReader fr = new FileReader(f); BufferedReader br = new BufferedReader(fr); while ((line = br.readLine()) != null) { if (line.contains(text)) { // => Added br.close();// We need to close read stream before delete f.delete(); counter++; } else if (f.isDirectory()) { counter += del(f, text); } } } return counter; } 已在saveAll中,因此无需指定自己的方法将所有内容保存在存储库界面中。

删除此部分:

CrudRepository

并在您的服务类中,直接调用`saveAll方法。请记住,此方法使用iterable作为参数并返回值。

答案 1 :(得分:-1)

saveAll方法具有以下签名:

    <S extends T> Iterable<S> saveAll(Iterable<S> entities);

您可以使用相同的名称定义附加方法,但签名不同。 Spring Data不知道如何为它创建实现并抛出异常。

只需将您的界面更改为:

public interface BinaryPartCRUDRepository extends CrudRepository<BinaryPart, Long> {}

你很高兴。