我有一个 BaseEntity 类:
和扩展类:
我正在尝试使用构建器构建播种机:
我希望 Lombok 在 BreedEntity 中使用基类 baseEntity 创建一个构造函数。
我阅读了文档,当我删除@entity注释时它工作得很好 SuperBuilder Docs
有人可以更详细地解释为什么会发生这种情况吗?
最佳答案
正如错误所示,实体必须有一个公共(public)的无参数构造函数。
Spring 库就是这样设计的。假设您进行查询 BreedRepo.findById(...)
,发生以下情况
- Hibernate访问数据库驱动程序并获取查询结果。
- 创建了
BreedEntity
的新类实例。 (为此,您需要无参数构造函数) - 然后使用 setter 方法设置在
BreedEntiry
中注册的所有 cloumns。 (您还需要为每个@Column
创建setter方法)
结论: Lombok 构建器与 Spring JPA 不兼容。使用@Data
代替
您必须以不太酷的方式执行此操作,new
然后 setX
、setY
...
关于java - Lombok SuperBuilder继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61063263/