ModelMapper does not support LIST and ARRAYLIST conversions:
package br.com.ClinicaMedicaTest.model;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import
javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import org.modelmapper.ModelMapper;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import br.com.ClinicaMedicaTest.dto.ConsultaDTO;
import br.com.ClinicaMedicaTest.dto.ConsultorioDTO;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
@JsonPropertyOrder({"id","pessoa","consultorio"})
@Getter
@Setter
@ToString
@AllArgsConstructor
@EqualsAndHashCode(callSuper = false)
@Entity
@Table(name = "TB_CONSULTA")
public class Consulta implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
@OneToMany(fetch = FetchType.LAZY, cascade = {CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REMOVE})
private List<Medico> medico = new ArrayList<Medico>();
@OneToMany(fetch = FetchType.LAZY, cascade = {CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REMOVE})
private List<Consultorio> consultorio = new ArrayList<Consultorio>();
}
package br.com.ClinicaMedicaTest.model;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import
javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import org.modelmapper.ModelMapper;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import br.com.ClinicaMedicaTest.dto.ConsultorioDTO;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
@JsonPropertyOrder({"id","numero", "data_hora"})
@Getter
@Setter
@ToString
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = false)
@Entity
@Table(name = "TB_CONSULTORIO")
public class Consultorio implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
private String numero;
private LocalDateTime data_hora;
@OneToMany(fetch = FetchType.LAZY, cascade = {CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REMOVE})
private List<Medico> medico = new ArrayList<Medico>();
}
package br.com.ClinicaMedicaTest.model;
import java.io.Serializable;
import java.util.List;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import
javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import org.modelmapper.ModelMapper;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import br.com.ClinicaMedicaTest.dto.ConsultorioDTO;
import br.com.ClinicaMedicaTest.dto.MedicoDTO;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
@JsonPropertyOrder({"id","crm","nome","idade"})
@Getter
@Setter
@ToString
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = false)
@Entity
@Table(name = "TB_MEDICO")
public class Medico implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@JsonProperty("id")
private Long id;
private String crm;
private String especialidade;
private String nome;
private int idade;
}
package br.com.ClinicaMedicaTest.dto;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.FetchType;
import javax.persistence.OneToMany;
import org.modelmapper.ModelMapper;
import org.springframework.hateoas.RepresentationModel;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import br.com.ClinicaMedicaTest.model.Consulta;
import br.com.ClinicaMedicaTest.model.Consultorio;
import br.com.ClinicaMedicaTest.model.Medico;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
@JsonPropertyOrder({"id", "pessoa", "consultorio"})
@Getter
@Setter
@ToString
@AllArgsConstructor
public class ConsultaDTO implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
@JsonProperty("id")
private long id;
@JsonProperty("pessoa")
private List<Medico> medico = new ArrayList<Medico>();
@JsonProperty("consultorio")
private List<Consultorio> consultorio = new ArrayList<Consultorio>();
}
package br.com.ClinicaMedicaTest.dto;
import java.io.Serializable;
import java.time.LocalDateTime;
import org.modelmapper.ModelMapper;
import org.springframework.hateoas.RepresentationModel;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import br.com.ClinicaMedicaTest.model.Consulta;
import br.com.ClinicaMedicaTest.model.Consultorio;
import br.com.ClinicaMedicaTest.model.Medico;
import lombok.AllArgsConstructor;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
@JsonPropertyOrder({"id","numero","data_hora","medico"})
@Getter
@Setter
@ToString
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = false)
public class ConsultorioDTO implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
@JsonProperty("id")
private long id;
@JsonProperty("numero")
private String numero;
@JsonProperty("data_hora")
private LocalDateTime data_hora;
@JsonProperty("medico")
private Medico medico;
}
package br.com.ClinicaMedicaTest.dto;
import java.io.Serializable;
import org.modelmapper.ModelMapper;
import org.springframework.hateoas.RepresentationModel;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import br.com.ClinicaMedicaTest.model.Consulta;
import br.com.ClinicaMedicaTest.model.Medico;
import lombok.AllArgsConstructor;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
@JsonPropertyOrder({"id","crm","nome","idade"})
@Getter
@Setter
@ToString
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = false)
public class MedicoDTO implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
@JsonProperty("id")
private Long id;
@JsonProperty("crm")
private String crm;
@JsonProperty("especialidade")
private String especialidade;
@JsonProperty("nome")
private String nome;
@JsonProperty("idade")
private int idade;
}
package br.com.ClinicaMedicaTest.mapper;
import org.modelmapper.ModelMapper;
import java.util.List;
import org.modelmapper.Converters.Converter;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import br.com.ClinicaMedicaTest.dto.ConsultaDTO;
import br.com.ClinicaMedicaTest.model.Consulta;
@Configuration
public class ClinicaMedicaMapper {
@Bean
public ModelMapper modelMapper(){
return new ModelMapper();
}
}
package br.com.ClinicaMedicaTest.controller;
import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.linkTo;
import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.methodOn;
import org.modelmapper.Converters.Converter;
import org.modelmapper.ModelMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import br.com.ClinicaMedicaTest.dto.ConsultaDTO;
import br.com.ClinicaMedicaTest.dto.MedicoDTO;
import br.com.ClinicaMedicaTest.model.Consulta;
import br.com.ClinicaMedicaTest.service.ConsultaService;
@RestController
@RequestMapping("/api/consulta")
public class ConsultaController {
@Autowired
private final ConsultaService consultaService;
@Autowired
private ModelMapper mapper;
public ConsultaController(ConsultaService consultaService, ModelMapper mapper) {
this.consultaService = consultaService;
this.mapper = mapper;
}
@PostMapping
//@ResponseStatus(HttpStatus.CREATED)
public ResponseEntity<ConsultaDTO> createConsulta(@RequestBody ConsultaDTO consultaDTO) {
// convert DTO to entity
Consulta consultaRequest = modelMapper.map(consultaDTO, Consulta.class);
Consulta consulta = consultaService.createConsulta(consultaRequest);
// convert entity to DTO
ConsultaDTO consultaResponse = modelMapper.map(consulta, ConsultaDTO.class);
return new ResponseEntity<ConsultaDTO>(consultaResponse, HttpStatus.CREATED);
}
}
Name error: modelMapper cannot be resolved.