首页 > 解决方案 > @RequiredArgsConstructor 不生成构造函数

问题描述

我有一个小组课程

@Data
@NoArgsConstructor
@RequiredArgsConstructor
@Entity
public class Group {

    @Id
    @GeneratedValue
    private Long id;

    @NotNull
    private String name;
    private String address;
    private String city;
    private String stateOrProvince;
    private String country;
    private String postalCode;
    @ManyToOne(cascade = CascadeType.PERSIST)
    private User user;

    @OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
    private Set<Event> event;

}

一个 GroupRepository 接口:

public interface GroupRepository extends JpaRepository<Group, Long> {

    Group findByName(String name);
}

用于加载数据的 Initializer 类:

@Component
public class Initializer implements CommandLineRunner {

    private final GroupRepository repository;

    public Initializer(GroupRepository groupRepository) {
        this.repository = groupRepository;
    }

    @Override
    public void run(String... args) throws Exception {
        Stream.of("Denver JUG", "Utah JUG", "Seattle JUG",
                "Richmond JUG").forEach(name ->
                repository.save(new Group(name)));
    }
}

规格:

  1. IDE:日食
  2. 爪哇:1.8

为什么我收到错误repository.save(new Group(name)));以及如何解决?

错误: The constructor Group(name) is undefined.

注意:虽然我使用的是 lombok 并@NotNull在 Group 类中添加了 name 字段。

标签: javaeclipsespring-bootjava-8lombok

解决方案


我认为 Lombok 不支持 @NotNull,您需要将字段设为 final 或使用 Lombok 的 @NonNull。


推荐阅读