源和目标共享相同的接口 MapStruct
Source and target share the same interface MapStruct
您好,我在使用 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 时,角色对象没有转换,我正在执行下一个主要方法:
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 class com.raidentrance.model.Role
我预计
Alex class com.raidentrance.model.RoleDto
这是我的问题的详细信息
Here is my code 我不确定 Jackson 中是否有类似 @JsonDeserialize(as=Impl.class) 或 JPA 中的 目标实体
注意:我在 github 存储库的分支工程中有一个解决方案。我在那里将 getRole 的数据类型从 IRole getRole()
更改为 RoleDto getRole()
并且它有效,但我正在寻找我提到的东西。
您必须为接口定义一个映射方法:
RoleDto roleToRoleDto(IRole role);
所以 mapstruct 现在可以做一个映射,如果一个方法 returns 一个 IRole 接口。
您好,我在使用 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 时,角色对象没有转换,我正在执行下一个主要方法:
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 class com.raidentrance.model.Role
我预计
Alex class com.raidentrance.model.RoleDto
这是我的问题的详细信息
Here is my code 我不确定 Jackson 中是否有类似 @JsonDeserialize(as=Impl.class) 或 JPA 中的 目标实体
注意:我在 github 存储库的分支工程中有一个解决方案。我在那里将 getRole 的数据类型从 IRole getRole()
更改为 RoleDto getRole()
并且它有效,但我正在寻找我提到的东西。
您必须为接口定义一个映射方法:
RoleDto roleToRoleDto(IRole role);
所以 mapstruct 现在可以做一个映射,如果一个方法 returns 一个 IRole 接口。