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