spring data mongo通过Id检索实体时在实体类上找不到属性b

J.P*_*Pip 4 lombok spring-data-mongodb spring-boot

我有一个具有一些共享字段的父类和一个扩展它的子类。

@SuperBuilder(toBuilder = true)
@Data
public abstract class MultiTenantAuthoredDocument {

    @Indexed
    private String tenantId;

    @CreatedDate
    private LocalDateTime createdDate;

    @LastModifiedDate
    private LocalDateTime lastModifiedDate;
}


@Document(collection = "users")
@SuperBuilder(toBuilder = true)
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
 public class User extends MultiTenantAuthoredDocument {

    @Id
    private String id;

    private String firstName;

    private String lastName;

    @Indexed
    private String password;

    @Indexed(unique = true)
    private String userName;

    @Indexed(unique = true)
    private String email;

    @Indexed
    private List<UserRole> roles;

    @Builder.Default
    private boolean enabled = false;

}
Run Code Online (Sandbox Code Playgroud)

但是,在运行我的单元测试时,我在执行 findById 时遇到了意外异常,并且发现了一个结果: No property b found on entity class be.moesmedia.erp.users.domain.User to bind constructor parameter to! 因为我不知道属性 b 来自哪里,所以很难看出我做错了什么。
如果有人能帮我指出我做错了什么。

J.P*_*Pip 12

所以我已经弄清楚出了什么问题,Lombok 生成了一个构造函数,它接受一个带有 SuperBuilder 类属性的对象。一旦我添加@NoArgsConstructor到子类和父类,它就像一个魅力。

  • 是的,这就是我不喜欢 `@Data` 的原因。你可能认为一个 required-args 构造函数(在这种情况下是 no-args)应该已经存在,但是 `@Data` 只在没有其他构造函数的情况下生成一个。`@SuperBuilder` 生成一个。 (3认同)