首页 > 解决方案 > Lombok builder 未生成 builder 方法,推断类型不符合上限

问题描述

我正在关注这个视频教程来了解一下 Spring:https ://www.youtube.com/watch?v=-f-7l8X716k

@Builder在引入注释之前,我一切顺利。

尝试使用它时,我的构建失败并显示以下消息:

[错误] ...spring/library/src/main/java/com/demo/LibraryApplication.java:[23,33] 方法保存在接口 org.springframework.data.repository.CrudRepository 不能应用于给定类型;必需:S 找到:com.demo.domain.Book.BookBuilder 原因:推断类型不符合上限推断:com.demo.domain.Book.BookBuilder 上限:com.demo.domain。书

输出谈论BookBuilder但没有类似的东西出现在自动完成中。

我发现了这个问题:inferred type does not conform to upper bound(s) hotelRepository.save(bookings) underlined

但是那里提供的解决方案没有任何改变。

这里出了什么问题?

编辑:我使用 Eclipse STS

查看有效的 POM,我看到:

代码看起来像这样:

书.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> {

}

图书馆应用程序.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);
    }
}

标签: javaspringspring-bootlombok

解决方案


Book.builder 返回一个BookBuilder你可以设置属性的地方,如果你想创建一本书,你应该做类似的事情:

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

你可以看看lombok builder文档


推荐阅读