こんにちは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);
}
私は両方の2つの実装を持っています:
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());
}
結果は次のとおりです。
アレックス クラス com.raidentrance.model.Role
そして私は期待した
アレックス クラス com.raidentrance.model.RoleDto
これが私の質問の詳細ですソースとターゲットは同じインターフェース MapStruct を共有します
これが私のコードです。ジャクソンに@JsonDeserialize(as=Impl.class)のようなものがあるかどうか、または JPA にtargetEntityのようなものがあるかどうかはわかりません
注: github リポジトリのブランチ作品に解決策があります。getRole のデータ型を から に変更しましたが、IRole getRole()
動作RoleDto getRole()
しますが、前述のようなものを探しています。