Como posso chamar um método de interface padrão de uma classe de implementação?
@Repository
public class FileInfoRepoImpl implements FileInfoRepo {
@Autowired
MongoTemplate mongoTemplate;
public UpdateResult updateFileInfo(FileInfo fileInfo) {
Query query = new Query(Criteria.where("id").is(fileInfo.getId()));
Update update = new Update();
update.set("name", fileInfo.getName());
update.set("size", fileInfo.getSize());
update.set("contentType", fileInfo.getContentType());
UpdateResult result = mongoTemplate.updateFirst(query, update, FileInfo.class);
return result;
}
@Override
public <S extends FileInfo> S save(S entity) {
//return FileInfoRepo.super.save(entity); # not compilled
throw new UnsupportedOperationException("Unimplemented method 'findAllById'");
}
A interface do FileInfoRepo se parece com isso:
public interface FileInfoRepo extends MongoRepository<FileInfo, String> {
List<FileInfo> findByName(String name);
UpdateResult updateFileInfo(FileInfo fileInfo);
}
Por favor, ajude a encontrar uma solução. Obrigado por todas as sugestões.
Interfaces, por definição, não possuem implementações de métodos, portanto, não existe um método "padrão" aqui. Você pode entender mais sobre interfaces Java aqui .
A segunda parte do seu problema aqui é que você pode não precisar implementar alguns dos métodos que está escrevendo. No Spring Boot, estender a classe MongoRepository oferece recursos simples de graça, como save e findById.
Leia este módulo, ele ajudará na compreensão
Aqui está a parte sobre o MongoRepository especificamente
Espero que ajude, bem-vindo ao Spring Boot!