【问题标题】:How should I fix "Expected 0 arguments but found 3" error if I want to use Lombok RequiredArgsConstructor annotation?如果我想使用 Lombok RequiredArgsConstructor 注释,我应该如何修复 \"Expected 0 arguments but found 3\" 错误?
【发布时间】:2023-02-04 03:25:58
【问题描述】:

我正在使用 Spring、JPA、Java17、MySQL。
集成开发环境:IntelliJ IDEA 2022.2.4
JDK:亚马逊 Corretto 17.0.6

我收到错误“预期 0 个参数但找到 3 个”。 (图片)

这是我的 Article 实体类代码,我正在使用 Lombok 删除样板代码。由于某种原因, RequiredArgsConstructor 注释无法在测试类中得到很好的管理,我需要创建实际的构造函数才能对其进行处理。

@Entity
@Getter
@Setter
@RequiredArgsConstructor
@Table(name = "article", schema = "chitchat")
public class Article {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(name = "title", nullable = false, length = 150)
    private String title;

    @OneToOne
    @JoinColumn(name = "category_id")
    private Category category;

    @Column(name = "comment_count", nullable = false)
    private int commentCount;

    @Column(name = "view_count", nullable = false)
    private int viewCount;

    @ToString.Exclude
    @OneToMany(mappedBy = "article", orphanRemoval = true)
    private Set<Tag> tags = new LinkedHashSet<>();

    @Column(name = "modification_date")
    private LocalDateTime modificationDate;

    @Column(name = "creation_date", nullable = false)
    private LocalDateTime creationDate;

    @Column(name = "content", nullable = false, length = 50000)
    private String content;

    @OneToOne(optional = false, orphanRemoval = true)
    @JoinColumn(name = "author_id", nullable = false)
    private User author;

    @Column(name = "published", nullable = false)
    private Boolean published = false;

    @OneToMany(mappedBy = "article")
    private Set<Comment> comments = new LinkedHashSet<>();
}

我尝试使用 AllArgsConstructor 并手动创建构造函数(工作正常)。

【问题讨论】:

    标签: java spring jpa spring-data-jpa lombok


    【解决方案1】:

    正如 @RequiredArgsConstructordocs 所建议的那样:

    生成具有所需参数的构造函数。必需的参数 是最终字段和带有约束的字段,例如@NonNull。

    因此,您的班级没有符合这些条件的字段

    @AllArgsConstructor

    生成一个全参数构造函数。全参数构造函数需要 类中每个字段的一个参数。

    所以,一切都按预期工作。

    【讨论】:

      猜你喜欢
      • 2020-09-20
      • 2023-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-30
      • 2020-01-29
      • 2022-12-30
      相关资源
      最近更新 更多