我正在尝试将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。感谢任何建议。
答案 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> {}
你很高兴。