Lombok builder не производит метод builder, предполагаемый тип не соответствует верхней границе - PullRequest
0 голосов
/ 18 октября 2018

Я изучал этот видеоурок, чтобы немного узнать о Spring: https://www.youtube.com/watch?v=-f-7l8X716k

У меня все получалось, пока не появилась аннотация @Builder.

При попытке его использоватьмоя сборка завершается со следующим сообщением:

[ОШИБКА] ... spring / library / src / main / java / com / demo / LibraryApplication.java: метод [23,33] save inинтерфейс org.springframework.data.repository.CrudRepository не может быть применен к данным типам;Обязательно: S найдено: com.demo.domain.Book.BookBuilder Причина: выведенный тип не соответствует верхней границе. Вывод: com.demo.domain.Book.BookBuilder Верхняя граница (ы): com.demo.domain.Книга

Вывод сообщений о BookBuilder, но ничего подобного не появляется в автозаполнении.

Я нашел этот вопрос: выведенный тип не соответствует верхней границе (s)) hotelRepository.save (бронирования) подчеркнуто

Но предлагаемое решение там ничего не меняет.

Что здесь не так?

РЕДАКТИРОВАТЬ: Я работал с Eclipse STS

Глядя на эффективную POM, я вижу:

  • Lombok 1.16.22
  • Все, что связано с пружиной, - это 2.0.6.RELEASE

Код выглядит следующим образом:

Book.java:

@Data
@NoArgsConstructor
@Builder
@AllArgsConstructor
@Entity
public class Book {

    @Id
    @GeneratedValue
    private long id;

    @NotNull
    private String title, isbn;
}

BookRepository.java:

@RepositoryRestResource(path = "books", collectionResourceRel = "books")
public interface BookRepository extends PagingAndSortingRepository<Book, Long> {

}

LibraryApplication.java:

@SpringBootApplication
public class LibraryApplication {

    @Autowired
    private BookRepository bookRepo;

    @Component
    class DataSetup implements ApplicationRunner {
        @Override
        public void run(ApplicationArguments args) throws Exception {
            bookRepo.save(Book.builder());
        }
    }

    public static void main(String[] args) {
        SpringApplication.run(LibraryApplication.class, args);
    }
}

1 Ответ

0 голосов
/ 18 октября 2018

Book.builder возвращает BookBuilder, где вы можете установить атрибут, если вы хотите создать Книгу, вы должны просто сделать что-то вроде:

@Override
public void run(ApplicationArguments args) throws Exception {
    bookRepo.save(Book.builder().build());
}

вы можете посмотреть документацию lombok builder

...