您好,我在使用MapStruct时遇到以下问题,我有以下接口:
public interface IRole {
String getName();
void setName(String name);
}
public interface IUser {
public String getUsername();
public void setUsername(String username);
public IRole getRole();
public void setRole(IRole role);
public String getPassword();
public void setPassword(String password);
}
我有两种实现:
User、UserDto、Role和RoleDto。
我创建了一个名为 UserMapper 的映射器:
@Mapper
public interface UserMapper {
UserDto userToUserDto(User user);
RoleDto roleToRoleDto(Role user);
}
问题是当我尝试将 User 转换为 UserDto 时,角色对象没有被转换,我正在执行下一个 main 方法:
public static void main(String[] args) {
UserMapper instance = Mappers.getMapper( UserMapper.class );
Role r=new Role();
r.setName("Admin");
User user=new User();
user.setUsername("Alex");
user.setPassword("Raidentrance123");
user.setRole(r);
UserDto dto=instance.userToUserDto(user);
System.out.println(dto.getUsername());
System.out.println(dto.getRole().getClass());
}
结果是:
Alex 类 com.raidentrance.model.Role
我期待
Alex 类 com.raidentrance.model.RoleDto
这是我的问题详细Source 和 target 共享相同的接口 MapStruct
这是我的代码,我不确定 Jackson 中是否有类似@JsonDeserialize(as=Impl.class)或 JPA 中的targetEntity
注意:我在 github 存储库中的分支工作中有一个解决方案。在那里,我将 getRole 的数据类型从IRole getRole()
to更改为RoleDto getRole()
有效,但我正在寻找我提到的东西。