Java 两种方法具有相同的擦除,但都不重写另一种方法

Java 两种方法具有相同的擦除,但都不重写另一种方法,java,spring,repository,Java,Spring,Repository,存储库中的“保存”与存储库中的“保存”冲突 “org.springframework.data.repository.crudepository”这两种方法都有 相同的擦除,但两者都不覆盖另一个 我犯了这个错误。我正在尝试创建一个名为BookRepository的接口。该接口扩展了Crudepository,我想在该接口内实现save方法和saveAll方法。当我实现所有方法时,除了save()和saveAll()之外,所有方法都可以正常工作 我在下面给你上课 图书存储库: package re

存储库中的“保存”与存储库中的“保存”冲突 “org.springframework.data.repository.crudepository”这两种方法都有 相同的擦除,但两者都不覆盖另一个

我犯了这个错误。我正在尝试创建一个名为BookRepository的接口。该接口扩展了Crudepository,我想在该接口内实现save方法和saveAll方法。当我实现所有方法时,除了save()和saveAll()之外,所有方法都可以正常工作

我在下面给你上课

图书存储库:

package repositories;

import com.ex.deneme_1.*;
import org.springframework.data.repository.CrudRepository;

import java.util.Optional;

public interface BookRepository extends CrudRepository<Book, Long>{

    @Override
    default  <S extends T> S save(S entity) { // That doesn't work
        return null;
    }

    @Override
    default <S extends T> Iterable<S> saveAll(Iterable<S> entities) { 
        //That doesn't work either
        return null;
    }

    @Override
    default Optional<Book> findById(Long id) {
        return null;
    }

    @Override
    default boolean existsById(Long id) {
        return false;
    }

    @Override
    default Iterable<Book> findAll() {
        return null;
    }

    @Override
    default Iterable<Book> findAllById(Iterable<Long> ids) {
        return null;
    }

    @Override
    default long count() {
        return 0;
    }

    @Override
    default void deleteById(Long id) {

    }

    @Override
    default void delete(Book entity) {

    }

    @Override
    default void deleteAll(Iterable<? extends Book> entities) {

    }

    @Override
    default void deleteAll() {

    }
}
包存储库;
导入com.ex.deneme_1.*;
导入org.springframework.data.repository.crudepository;
导入java.util.Optional;
公共接口BookRepository扩展了Crudepository{
@凌驾
默认的S保存(S实体){//不起作用
返回null;
}
@凌驾
默认Iterable saveAll(Iterable实体){
//那也不行
返回null;
}
@凌驾
默认可选findById(长id){
返回null;
}
@凌驾
默认布尔值existsById(长id){
返回false;
}
@凌驾
默认Iterable findAll(){
返回null;
}
@凌驾
默认Iterable findAllById(Iterable ID){
返回null;
}
@凌驾
默认长计数(){
返回0;
}
@凌驾
默认的void deleteById(长id){
}
@凌驾
默认作废删除(账簿实体){
}
@凌驾

默认的void deleteAll(Iterable因为您正在扩展crudepository,所以save方法应该是Book,这意味着save(Book entity)

您想覆盖Crudepository中的save方法有什么特别的原因吗?Spring数据的工作方式是,它将自动实现Crudepository接口的任何接口扩展,并为您提供用于保存实体的现成方法,因此您不应该真的需要覆盖它。

方法
save
不应该是
默认的S保存(S实体)
?对于
saveAll
方法,您应该使用
Book
更改
T
BookRepository
类还是接口?BookRepository是一个接口。谢谢您!
package Bootstrap;

import com.ex.deneme_1.*;
import org.springframework.context.ApplicationListener;
import org.springframework.context.event.ContextRefreshedEvent;
import org.springframework.stereotype.*;
import repositories.*;

@Component
public class DevBootstrap implements ApplicationListener<ContextRefreshedEvent>{

private BookRepository bookRepository;
private AuthorRepository authorRepository;

public DevBootstrap(AuthorRepository authorRepository, BookRepository bookRepository)
{
    this.authorRepository = authorRepository;
    this.bookRepository = bookRepository;
}

@Override
public void onApplicationEvent(ContextRefreshedEvent contextRefreshedEvent) {
    initData();
}


private void initData(){
    Author xyz = new Author("xyz","xyz");
    Book abc = new Book("Trying to learn Spring","1234","StackOverFlow");

    xyz.getBooks().add(abc);
    abc.getAuthors().add(xyz);

    authorRepository.save(xyz);
    bookRepository.save(abc);


}


}
    package com.ex.deneme_1;
    import javax.annotation.Generated;
    import javax.persistence.*;
    import java.util.HashSet;
    import java.util.Set;
    import java.awt.*;


@Entity



public class Book extends java.awt.print.Book {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private String title,isbn,publisher;
private long id;
@ManyToMany


 @JoinTable(name = "author_book", joinColumns = @JoinColumn(name="book_id"),
    inverseJoinColumns = @JoinColumn(name = "author_id"))

    private Set<Author> authors = new HashSet<>();

public Book(){

}

public Book(String title,String isbn, String publisher)
{
    this.title = title;
    this.isbn = isbn;
    this.publisher = publisher;
}

public Book(String title, String isbn, String publisher, Set<Author> author)
{
    this.title = title;
    this.isbn = isbn;
    this.publisher = publisher;
    this.authors = author;
}

public String getTitle() { return title; }
public String getIsbn() { return isbn; }
public String getPublisher() { return publisher; }
public Set<Author> getAuthors(){ return authors; }
public long getId() {
    return id;
}



public void setId(long id) {
    this.id = id;
}
public void setTitle(String title) { this.title = title; }
public void setIsbn(String isbn) { this.isbn = isbn; }
public void setPublisher(String publisher){ this.publisher = publisher; }
public void setAuthors(Set<Author> authors){ this.authors = authors; }


}