Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Como criar um método da Controller que deverá retornar uma viewmodel?

Pessoal, a minha dúvida é saber a melhor forma de criar um método na Controller para retornar uma viewmodel.
2 respostas
solução!

Não entendi muito bem, mas vou compartilhar a forma que eu faço. Espero que ajude de alguma forma.

@Entity
@Table(name="T_EXEMPLO")
@SequenceGenerator(name = "EXEMPLO_SEQ", sequenceName = "SQ_EXEMPLO_CODIGO")
@Data
public class Exemplo implements Serializable {

    /**
     * 
     */
    private static final long serialVersionUID = 4809055440167929997L;

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO, generator = "EXEMPLO_SEQ")
    private Long id;

    private String campo1;
    private String campo2;
    private String campo3;
    private String campo4;
    private String campo5;

}
@Getter
@Setter
public class ExemploDTO {
    private String campo1;
    private String campo3;
    private String campo5;
}
@Repository
public interface ExemploRepository extends JpaRepository<Exemplo, Long> {

    @Query("SELECT E.campo1, E.campo3, E.campo5 FROM EXEMPLO E WHERE C.id = :idExemplo")
    ExemploDTO getByIdViewModel(Long idExemplo);

}
@Service
public class ExemploService {

    @Autowired
    private ExemploRepository contatoRepository;

    public ExemploDTO getByIdViewModel(Long idContato) {
        return contatoRepository.getByIdViewModel(idContato);
    }

}
@RestController
@RequestMapping("/exemplo")
public class ExemploController {

    @Autowired
    private ExemploService exemploService;

    @GetMapping("/getByIdViewModel")
    public ExemploDTO getByIdViewModel(@RequestParam(name = "id") Long idExemplo) {
        return exemploService.getByIdViewModel(idExemplo);
    }

}
                            Obrigado pelo exemplo.