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

我正在使用以下内容:

@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

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

回答:

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

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

 @RequiredArgsConstructor

@NoArgsConstructor

@Data

@Builder

public class Person {...}

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

以上是 在实体上使用lomboks @Data和@Builder 的全部内容, 来源链接: utcz.com/qa/429642.html

回到顶部