I got the following two classes (I'm trying to map from 1st to 2nd):
@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;
}
I also got the following mapper:
@Mapper(componentModel = "spring")
public interface RegisterRequestDtoToUser {
User requestToUser(RegisterRequestDto requestDto);
}
This is what I got in my build.gradle file:
implementation 'org.mapstruct:mapstruct:1.4.2.Final'
annotationProcessor 'org.mapstruct:mapstruct-processor:1.4.2.Final'
And this is what mapper I get from mapstruct for classes I mentioned above, as you can see it's obviously invalid:
@Component
public class RegisterRequestDtoToUserImpl implements RegisterRequestDtoToUser {
@Override
public User requestToUser(RegisterRequestDto requestDto) {
if ( requestDto == null ) {
return null;
}
User user = new User();
return user;
}
}
What's wrong, how do I fix it?