我有一个具有一些共享字段的父类和一个对其进行扩展的子类。
@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;
}
但是,在运行单元测试时,执行findById时出现意外异常,结果为:
No property b found on entity class be.moesmedia.erp.users.domain.User to bind constructor parameter to!
因为我不知道属性b的来源,所以很难看出我做错了什么。
如果有人可以帮助我指出我在做错什么。
答案 0 :(得分:3)
所以我弄清楚出了什么问题,Lombok生成了一个构造器,该构造器接受具有SuperBuilder类属性的Object。将@NoArgsConstructor
添加到子班和父班后,它就像是一种魅力。