当前位置: 首页 > 面试题库 >

在实体上使用lomboks @Data和@Builder

吴正祥
2023-03-14
问题内容

我正在使用以下内容:

@Entity
@Data
@Builder
@NoArgsConstructor(force = true)
public class User {
    private String id;
    private String firstName;
    private String lastName;
}

我要实现的目标:对于JPA用法,我需要一个带有noArgConstructor,getters / setters和equals / hashCode /
toString的POJO。

对于实例创建(例如在测试中),我想使用User.builder()。build();

问题:它无法编译,NoArgConstructor与RequiredFieldsConstructor似乎存在问题:

Error:(15, 1) java: constructor User in class x.y.z.User cannot be applied to given types;
required: no arguments
found:    java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String
reason: actual and formal argument lists differ in length

更新:当我尝试通过new… builder()工作时,创建新实体时发生错误。

我想念什么?不能同时使用@ Data,@ Entity和@Builder吗?


问题答案:

我将通过总结评论来回答我自己的问题。

首先,感谢@RoelSpilker,如果您明确提供AllArgs-和NoArgs-构造函数,则可以在一个Pojo上同时使用Builder和Data:

 @RequiredArgsConstructor
 @NoArgsConstructor
 @Data
 @Builder
 public class Person {...}

但是:为此类创建的构建器将不知道任何继承的字段。对于我的用例(具有一些AbstractEntities),这使解决方案无用,我现在将继续使用手动助手/构建器。



 类似资料:
  • 我开始学习使用实体图来减少N1问题。但我面临一个问题,findAll方法返回重复数据。 < code >人 我创建一个 pom.xml代码 我的代码出了什么问题?方法 都不能使用 EntityGraph?

  • 问题陈述 我有以下实体: 如果更新,我希望更新对象。例如,我使用我希望对象是id为的对象 更新并使用保存对象,并将当前的对象替换为保存在数据库中的新的对象 失败,因为未从数据库中提取对象 这个也失败了。

  • 问题内容: 这个问题几乎说明了一切。使用JPARepository如何更新实体? JPARepository只有一个 save 方法,它不会告诉我它是否实际上是在创建或更新。例如,我插入一个简单的对象数据库的用户,其中有三个领域:,和: 然后,我简单地调用,这实际上是数据库的插入: 到目前为止,一切都很好。现在,我想更新此用户,例如更改其年龄。为此,我可以使用QueryDSL或NamedQuery

  • 我在Spring Boot中使用Spring Data JPA。 在使用Spring Data Jpa存储库将一个实体保存到数据库后,我不会得到整个实体。即只获取我传递给save()的值。 组织实体: 控制器类: 服务类别:

  • 我正在学习一些fullstack的东西。我创建了一个JHipster项目,并创建了一个名为Post的实体,其中有几个字段,比如主题、正文和文章作者的姓名。模型正在运行,我可以添加新帖子。问题是我想把实体放在主页上的一个块中,就像博客一样。这是我的主页: 这是我的组件。ts 函数loadAll()来自一个教程,在版本4中是一个角度,我的是9,它不工作。我添加了一个类响应包装器,但我不确定应该放什么,