我得到了以下两个类(我试图从第1映射到第2):
@Data
@AllArgsConstructor
@NoArgsConstructor
public class RegisterRequestDto {
private String username;
private String firstName;
private String lastName;
private String password;
}
@Entity
@Getter
@Setter
@ToString
@AllArgsConstructor
@NoArgsConstructor
@Table(name = "users")
public class User extends BaseEntity {
@Column(name = "username")
private String username;
@Column(name = "first_name")
private String firstName;
@Column(name = "last_name")
private String lastName;
@Column(name = "password")
private String password;
@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(
name = "user_roles",
joinColumns = {@JoinColumn(name = "user_id", referencedColumnName = "id")},
inverseJoinColumns = {@JoinColumn(name = "role_id", referencedColumnName = "id")}
)
private List<Role> roles;
}
我还得到了以下映射器:
@Mapper(componentModel = "spring")
public interface RegisterRequestDtoToUser {
User requestToUser(RegisterRequestDto requestDto);
}
这是我在我的构建中得到的。gradle文件:
implementation 'org.mapstruct:mapstruct:1.4.2.Final'
annotationProcessor 'org.mapstruct:mapstruct-processor:1.4.2.Final'
这是我从mapstruct中得到的映射器对于我上面提到的类,你可以看到它显然是无效的:
@Component
public class RegisterRequestDtoToUserImpl implements RegisterRequestDtoToUser {
@Override
public User requestToUser(RegisterRequestDto requestDto) {
if ( requestDto == null ) {
return null;
}
User user = new User();
return user;
}
}
出了什么问题,我该怎么解决?
添加以下依赖项后,一切正常:
implementation "org.mapstruct:mapstruct:${mapstructVersion}", "org.projectlombok:lombok:${lombokVersion}"
annotationProcessor "org.mapstruct:mapstruct-processor:${mapstructVersion}", "org.projectlombok:lombok:${lombokVersion}", "org.projectlombok:lombok-mapstruct-binding:${lombokMapstructBindingVersion}"