java - Lombok SuperBuilder继承

标签 java spring-boot lombok spring-boot-jpa

我有一个 BaseEntity 类:

enter image description here

和扩展类:

enter image description here

我正在尝试使用构建器构建播种机:

enter image description here

我希望 Lombok 在 BreedEntity 中使用基类 baseEntity 创建一个构造函数。

我阅读了文档,当我删除@entity注释时它工作得很好 SuperBuilder Docs

有人可以更详细地解释为什么会发生这种情况吗?

最佳答案

正如错误所示,实体必须有一个公共(public)的无参数构造函数。

Spring 库就是这样设计的。假设您进行查询 BreedRepo.findById(...),发生以下情况

  • Hibernate访问数据库驱动程序并获取查询结果。
  • 创建了 BreedEntity 的新类实例。 (为此,您需要无参数构造函数)
  • 然后使用 setter 方法设置在 BreedEntiry 中注册的所有 cloumns。 (您还需要为每个@Column创建setter方法)

结论: Lombok 构建器与 Spring JPA 不兼容。使用@Data代替

您必须以不太酷的方式执行此操作,new 然后 setXsetY ...

关于java - Lombok SuperBuilder继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61063263/

相关文章:

java - 如何在 hibernate 中记录失败的sql?

java 8 具有公共(public)多个字段的对象列表中的求和字段

java - 基于 User-Agent 的 Change Velocity 模板

java - 是否可以仅通过在java客户端中提供缓存配置来启动ignite缓存?

java - Spring Boot 和 Thymeleaf 中的 Action 监听器

java - 为具有前缀 "has"的 boolean 成员编辑 lombok getter 方法名称

java - IntelliJ 无法识别 Lombok @Builder

java - Control + W 退出系统

java - 如何在android中创建发光背景?

java - 在 Spring Boot 中使用 cookie 进行身份验证