当前位置: 首页 > 知识库问答 >
问题:

龙目岛超级建筑继承

杜曜灿
2023-03-14

我有一个类BaseEntity:

和一个扩展类:

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

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

我读了留档,当我删除@实体anotation SuperBuilder文档时,它工作得很好

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

共有3个答案

萧展鹏
2023-03-14

这样试试

@Getter
@MappedSuperclass
@SuperBuilder(toBuilder = true)
public abstract class BaseEntity

@Getter
@Entity
@Table(...)
@NoArgsConstructor
@SuperBuilder(toBuilder = true)
public class BreedEntity extends BaseEntity

它在我的情况下工作。如果出于某种原因它对你不起作用。您可以调查这些示例并了解如何解决问题。

常睿范
2023-03-14

我建议为Hibernate添加一个包私有构造函数,这样您几乎可以实现所需的功能。

@NoArgsConstructor(access = AccessLevel.PACKAGE)
BreedEntity
韩单弓
2023-03-14

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

Spring库就是这样设计的。假设您进行了一个查询breedepo。findById(…) ,发生了以下事情

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

结论:Lombok builder与Spring JPA不兼容。改用@Data

你必须以不那么酷的方式做到这一点,new然后setXsetY...

 类似资料:
  • 我正在使用Lombok的注释在我的类中创建一个超级构造函数。 我的抽象控制器类: 我的控制器实现类: 我的服务类别: 基本上,我希望Lombok在中创建一个类似的构造函数 我的应用程序无法启动,错误消息如下所示: MyAbstractControllerImpl中构造函数的参数0需要类型为“MyAbstractControllerImpl$MyAbstractControllerImpBuilde

  • 问题内容: 我有一个名为“ XYZClientWrapper”的类,其结构如下: 我不希望为属性生成任何构建函数 龙目岛是否支持这种用例? 问题答案: 是的,您可以将@Builder放在仅包含所需字段的构造函数或静态(工厂)方法上。 披露:我是Lombok开发人员。

  • 我在gradle项目中使用lombok,希望创建一个jar文件,但每次我执行jar任务(无论是在控制台还是eclipse ide中触发)时,我都会发现错误,我的lombok导入在我使用lombok注释的类中找不到。输出示例: 搜索了一段时间后,我发现有一个适用于gradle和lombok的插件,但在使用较新的gradle版本编译时并不真正需要。我的gradle版本是3.4.1和lombok 1.6

  • 目前无法与Gradle和龙目岛建立新项目。 我知道这是旧版本gradle和lombok的常见问题,并在本网站上看到类似问题,但我使用的是最新版本,无法通过此问题 环境信息 Java:openjdk 13.0.1 2019-10-15(这是OpenJ9版本,不是热点版本) 建筑gradle(使用Spring初始化器构建) 我尝试过的事情 我尝试过将deps换成Lombok gradle插件,如下所述

  • 我想使用lombok:EqualsAndHashCode,只考虑Id,设置在Item class上,在分层结构之上。这些是我的课程: 1.流程: 2.资源流动: 3.项目: 这是正确的还是有其他方法可以通过Id来比较像Process这样的项的子项?我在孩子中使用了callSuper=true和onlyExplicitlyIncluded=true,设置了@EqualsAndHashCode。包含父

  • 问题内容: 我有一堂课,看起来像这样: 在这里,我不得不写a,因为如果我想在使用Lombok时返回Optional,则必须声明为。这将生成一个接受的生成器方法! 还有其他方法可以使用lombok 吗? 问题答案: 答案是否定的,可能永远也不会。 您可能做错了:-) 并不是预防的替代品,也不是预防的奇特方法。这表示该问题无法回答,例如:空人员列表的平均年龄是多少。 绝对不应传递,而应尽快由调用代码取