Code: Select all
import lombok.Getter;
import lombok.Setter;
import java.util.List;
@Getter
@Setter
public class UserRequestDto {
private Long id;
private String name;
private List emailData;
}
< /code>
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.OneToMany;
import jakarta.persistence.Table;
import lombok.Getter;
import lombok.Setter;
import java.util.List;
@Entity
@Getter
@Setter
@Table(name = "\"user\"")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
@OneToMany
private List emailData;
}
< /code>
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.Table;
import lombok.Getter;
import lombok.Setter;
@Entity
@Getter
@Setter
@Table(name = "email_data")
public class EmailData {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
// a back reference to user is omitted for irrelevance
private String email;
}
< /code>
import org.mapstruct.Mapper;
@Mapper(uses = EmailMapper.class, componentModel="spring")
public interface UserMapper {
User toUser(UserRequestDto userRequestDto);
}
< /code>
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
@Mapper
public interface EmailMapper {
@Mapping(source = ".", target = "email")
EmailData toEmailData(String email);
}
< /code>
import com.example.pixel_user_api.data.dto.request.UserRequestDto;
import com.example.pixel_user_api.data.entity.User;
import org.junit.jupiter.api.Test;
import org.mapstruct.factory.Mappers;
import java.util.List;
import static org.assertj.core.api.Assertions.assertThat;
class UserMapperTest {
@Test
void testMapper() {
UserRequestDto userDto = new UserRequestDto();
userDto.setId(123L);
userDto.setName("Steve123");
String email = "steve@gmail.com";
userDto.setEmailData(List.of(email));
UserMapper mapper = Mappers.getMapper(UserMapper.class);
User user = mapper.toUser(userDto); // throws NPE
}
}
< /code>
java.lang.NullPointerException: Cannot invoke "com.example.pixel_user_api.mapper.EmailMapper.toEmailData(String)" because "this.emailMapper" is null