Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to use Mapstruct when target is inline object?

Tags:

java

mapstruct

I have the object like this:

class User {

 private String firstName;

 private String secondName;

 private int age;

 ....
 get/set methods

}

And another object has User as a property:

class UserHolder {

 private User user;

 ....
 get/set methods

}

I want to convert UserHolder to User use MapStruct.

When I write this mapper I've something like this:

@Mapper(componentModel = "spring")
public interface UserHolderMapper {

 @Mapping(source = "user.firstName", target = "firstName")
 @Mapping(source = "user.secondName", target = "secondName")
 @Mapping(source = "user.age", target = "age")
 User toUser(UserHolder source);

}

But it contains a lot of boilerplate code (in @Mapping annotation), how I can say to mapper that I want to map source.user to this target without specifying fields of target?

like image 814
jedicode Avatar asked Jun 10 '26 03:06

jedicode


1 Answers

I may be late to the party. However following should work fine.

@Mapper(componentModel = "spring")
public interface UserHolderMapper {

 @Mapping(source = "source.user", target = ".")
 User toUser(UserHolder source);

}
like image 183
bluelurker Avatar answered Jun 11 '26 19:06

bluelurker