ModelMapper does not support LIST and ARRAYLIST conversions

104 views
Skip to first unread message

Guilherme Mendes Ramalho

unread,
Jun 8, 2022, 8:11:37 AM6/8/22
to modelmapper
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.

   

Reply all
Reply to author
Forward
0 new messages