[RESOLVIDO] Meu método está indefinido e por isso não deixa o get funcionar

Eu reformulei a pergunta e vou explicá-la mais detalhadamente. Sinto muito e obrigado. É assim que o sistema está em spring boot java. O java que estou usando é o 11. Quanto ao sistema, ele sobe. Ele se comunica com o banco de dados. No entanto, não consigo fazer com que o sistema funcione. Ele me dá a resposta do método indefinido e eu não entendo o que estou recebendo de errado. Aqui você tem muitas respostas sobre o método indefinido, mas nenhuma que eu tenha procurado é semelhante ao meu erro.

My resource:

package br.com.inteligate.entrevista.teste.rs.cidade; 

import java.util.Optional;
import java.util.stream.Collectors;
import java.util.stream.StreamSupport;

import javax.validation.Valid;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.querydsl.binding.QuerydslPredicate;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.querydsl.core.types.Predicate;

import br.com.inteligate.entrevista.teste.base.page.dto.PageDto;
import br.com.inteligate.entrevista.teste.data.entity.Cidade;
import br.com.inteligate.entrevista.teste.data.repository.CidadeRepository;
import br.com.inteligate.entrevista.teste.data.repository.EstadoRepository;
import br.com.inteligate.entrevista.teste.exceptions.AppException;

@RestController 
@RequestMapping("/api/cidade") 
public class CidadeResource {
		
	@Autowired
	private CidadeRepository repository;
	@Autowired
	private EstadoRepository repositoryEstado;
	@Autowired
	private CidadeResourceMapper mapper;

	@GetMapping(produces = { MediaType.APPLICATION_JSON_VALUE })
	public ResponseEntity<PageDto<CidadeDTO>> getPageWithQuery(@QuerydslPredicate(root = Cidade.class ) Predicate predicate, Pageable pageble) {
		return ResponseEntity.ok(convertToPageDto(predicate, pageble));
	}
	
	@PostMapping
	public ResponseEntity<CidadeDTO> add(@Valid @RequestBody CidadeWriteDTO dto) throws Exception {
		Cidade entity = this.mapper.fromDto(dto);
		
    	entity = repository.save(entity);
    	
    	ResponseEntity<CidadeDTO> re = ResponseEntity.ok(this.convertToDto(entity));
    	
    	return re;
				
	}

	@GetMapping(value = "/{id}")
	public ResponseEntity<CidadeDTO> get(@PathVariable Integer id) {
		return ResponseEntity.ok(convertToDto(repository.findById(id).get()));
	}
		
	@PutMapping(value = "/{id}")
	public ResponseEntity<CidadeDTO> update(@Valid @RequestBody CidadeWriteDTO dto, @PathVariable Integer id) throws AppException {
		
		Optional<Cidade> entity = repository.findById(id);
		if (entity.isPresent()) {
						
			Double qtdPopulacao = 0D;
			if (entity.get().getEstado().getPopulacao() == null)
				qtdPopulacao = entity.get().getPopulacao();
			else {
				// Remove a população da cidade (antes da alteração)
				qtdPopulacao = entity.get().getEstado().getPopulacao() - entity.get().getPopulacao();
			}
			
			this.mapper.merge(entity.get(), dto);

			// Adiciona a população da cidade
			qtdPopulacao += dto.getPopulacao();
			
			// Atualiza os dados no estado
			entity.get().getEstado().setPopulacao(qtdPopulacao);
			
			// Salva a entidade no BD
			repositoryEstado.save(entity.get().getEstado());
			
			if (dto.getPopulacao() < 0)
				throw new AppException("Valor inválido da quantidade da população");

			
			Cidade mergedEntity = repository.save(entity.get());
        	
        	ResponseEntity<CidadeDTO> re = ResponseEntity.ok(this.convertToDto(mergedEntity));
        	
			return re;
		} else {
			throw new RuntimeException();
		}
		
	}	

	@DeleteMapping(value = "/{id}")
	public void delete(@PathVariable Integer id) throws Exception {
		
		repository.deleteById(id);
		
	}
	
	private PageDto<CidadeDTO> convertToPageDto(Predicate predicate, Pageable pageble) {
		Page<Cidade> pageEntity = repository.findAll(predicate, pageble);
		
		return new PageDto<>(StreamSupport.stream(pageEntity.spliterator(), false).map(this::convertToDto)
				.collect(Collectors.toList()), pageEntity.getTotalElements());
	}	   
	
	private CidadeDTO convertToDto(Cidade entity) {
		return mapper.toDto(entity);
	}
		
}

E qual é essa resposta?

Olá @pmlm, obrigado por querer me ajudar, desculpe pela demora em responder, mas vamos lá!
No console do STS, ele aparece como “startado”, e sim, funciona em enviar os dados para o banco e tal e aparecem estes erros:

  Initialized JPA EntityManagerFactory for persistence unit 'default'
e[2m2020-11-27 10:57:15.030e[0;39m e[33m WARNe[0;39m e[35m14582e[0;39m e[2m---e[0;39m e[2m[  restartedMain]e[0;39m e[36maWebConfiguration$JpaWebMvcConfiguratione[0;39m e[2m:e[0;39m spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning
e[2m2020-11-27 10:57:15.063e[0;39m e[32m INFOe[0;39m e[35m14582e[0;39m e[2m---e[0;39m e[2m[  restartedMain]e[0;39m e[36ms.w.s.m.m.a.RequestMappingHandlerMappinge[0;39m e[2m:e[0;39m Mapped "{[/api/cidade],methods=[GET],produces=[application/json]}" onto public org.springframework.http.ResponseEntity<br.com.inteligate.entrevista.teste.base.page.dto.PageDto<br.com.inteligate.entrevista.teste.rs.cidade.CidadeDTO>> br.com.inteligate.entrevista.teste.rs.cidade.CidadeResource.getPageWithQuery(com.querydsl.core.types.Predicate,org.springframework.data.domain.Pageable)
e[2m2020-11-27 10:57:15.063e[0;39m e[32m INFOe[0;39m e[35m14582e[0;39m e[2m---e[0;39m e[2m[  restartedMain]e[0;39m e[36ms.w.s.m.m.a.RequestMappingHandlerMappinge[0;39m e[2m:e[0;39m Mapped "{[/api/cidade],methods=[POST]}" onto public org.springframework.http.ResponseEntity<br.com.inteligate.entrevista.teste.rs.cidade.CidadeDTO> br.com.inteligate.entrevista.teste.rs.cidade.CidadeResource.add(br.com.inteligate.entrevista.teste.rs.cidade.CidadeWriteDTO) throws java.lang.Exception
e[2m2020-11-27 10:57:15.063e[0;39m e[32m INFOe[0;39m e[35m14582e[0;39m e[2m---e[0;39m e[2m[  restartedMain]e[0;39m e[36ms.w.s.m.m.a.RequestMappingHandlerMappinge[0;39m e[2m:e[0;39m Mapped "{[/api/cidade/{id}],methods=[GET]}" onto public org.springframework.http.ResponseEntity<br.com.inteligate.entrevista.teste.rs.cidade.CidadeDTO> br.com.inteligate.entrevista.teste.rs.cidade.CidadeResource.get(java.lang.Integer)
e[2m2020-11-27 10:57:15.063e[0;39m e[32m INFOe[0;39m e[35m14582e[0;39m e[2m---e[0;39m e[2m[  restartedMain]e[0;39m e[36ms.w.s.m.m.a.RequestMappingHandlerMappinge[0;39m e[2m:e[0;39m Mapped "{[/api/cidade/{id}],methods=[PUT]}" onto public org.springframework.http.ResponseEntity<br.com.inteligate.entrevista.teste.rs.cidade.CidadeDTO> br.com.inteligate.entrevista.teste.rs.cidade.CidadeResource.update(br.com.inteligate.entrevista.teste.rs.cidade.CidadeWriteDTO,java.lang.Integer) throws br.com.inteligate.entrevista.teste.exceptions.AppException
e[2m2020-11-27 10:57:15.064e[0;39m e[32m INFOe[0;39m e[35m14582e[0;39m e[2m---e[0;39m e[2m[  restartedMain]e[0;39m e[36ms.w.s.m.m.a.RequestMappingHandlerMappinge[0;39m e[2m:e[0;39m Mapped "{[/api/cidade/{id}],methods=[DELETE]}" onto public void br.com.inteligate.entrevista.teste.rs.cidade.CidadeResource.delete(java.lang.Integer) throws java.lang.Exception
e[2m2020-11-27 10:57:15.065e[0;39m e[32m INFOe[0;39m e[35m14582e[0;39m e[2m---e[0;39m e[2m[  restartedMain]e[0;39m e[36ms.w.s.m.m.a.RequestMappingHandlerMappinge[0;39m e[2m:e[0;39m Mapped "{[/api/estado],methods=[GET],produces=[application/json]}" onto public org.springframework.http.ResponseEntity<br.com.inteligate.entrevista.teste.base.page.dto.PageDto<br.com.inteligate.entrevista.teste.rs.estado.EstadoDTO>> br.com.inteligate.entrevista.teste.rs.estado.EstadoResource.getPageWithQuery(com.querydsl.core.types.Predicate,org.springframework.data.domain.Pageable)
e[2m2020-11-27 10:57:15.065e[0;39m e[32m INFOe[0;39m e[35m14582e[0;39m e[2m---e[0;39m e[2m[  restartedMain]e[0;39m e[36ms.w.s.m.m.a.RequestMappingHandlerMappinge[0;39m e[2m:e[0;39m Mapped "{[/api/estado],methods=[POST]}" onto public org.springframework.http.ResponseEntity<br.com.inteligate.entrevista.teste.rs.estado.EstadoDTO> br.com.inteligate.entrevista.teste.rs.estado.EstadoResource.add(br.com.inteligate.entrevista.teste.rs.estado.EstadoDTO) throws java.lang.Exception
e[2m2020-11-27 10:57:15.065e[0;39m e[32m INFOe[0;39m e[35m14582e[0;39m e[2m---e[0;39m e[2m[  restartedMain]e[0;39m e[36ms.w.s.m.m.a.RequestMappingHandlerMappinge[0;39m e[2m:e[0;39m Mapped "{[/api/estado/{id}],methods=[GET]}" onto public org.springframework.http.ResponseEntity<br.com.inteligate.entrevista.teste.rs.estado.EstadoDTO> br.com.inteligate.entrevista.teste.rs.estado.EstadoResource.get(java.lang.Integer)
e[2m2020-11-27 10:57:15.065e[0;39m e[32m INFOe[0;39m e[35m14582e[0;39m e[2m---e[0;39m e[2m[  restartedMain]e[0;39m e[36ms.w.s.m.m.a.RequestMappingHandlerMappinge[0;39m e[2m:e[0;39m Mapped "{[/api/estado/{id}],methods=[PUT]}" onto public org.springframework.http.ResponseEntity<br.com.inteligate.entrevista.teste.rs.estado.EstadoDTO> br.com.inteligate.entrevista.teste.rs.estado.EstadoResource.update(br.com.inteligate.entrevista.teste.rs.estado.EstadoDTO,java.lang.Integer) throws java.lang.Exception
e[2m2020-11-27 10:57:15.065e[0;39m e[32m INFOe[0;39m e[35m14582e[0;39m e[2m---e[0;39m e[2m[  restartedMain]e[0;39m e[36ms.w.s.m.m.a.RequestMappingHandlerMappinge[0;39m e[2m:e[0;39m Mapped "{[/api/estado/{id}],methods=[DELETE]}" onto public void br.com.inteligate.entrevista.teste.rs.estado.EstadoResource.delete(java.lang.Integer) throws java.lang.Exception
e[2m2020-11-27 10:57:15.066e[0;39m e[32m INFOe[0;39m e[35m14582e[0;39m e[2m---e[0;39m e[2m[  restartedMain]e[0;39m e[36ms.w.s.m.m.a.RequestMappingHandlerMappinge[0;39m e[2m:e[0;39m Mapped "{[/api/pais],methods=[GET],produces=[application/json]}" onto public org.springframework.http.ResponseEntity<br.com.inteligate.entrevista.teste.base.page.dto.PageDto<br.com.inteligate.entrevista.teste.rs.pais.PaisDTO>> br.com.inteligate.entrevista.teste.rs.pais.PaisResource.getPageWithQuery(com.querydsl.core.types.Predicate,org.springframework.data.domain.Pageable)
e[2m2020-11-27 10:57:15.066e[0;39m e[32m INFOe[0;39m e[35m14582e[0;39m e[2m---e[0;39m e[2m[  restartedMain]e[0;39m e[36ms.w.s.m.m.a.RequestMappingHandlerMappinge[0;39m e[2m:e[0;39m Mapped "{[/api/pais],methods=[POST]}" onto public org.springframework.http.ResponseEntity<br.com.inteligate.entrevista.teste.rs.pais.PaisDTO> br.com.inteligate.entrevista.teste.rs.pais.PaisResource.add(br.com.inteligate.entrevista.teste.rs.pais.PaisDTO) throws java.lang.Exception
e[2m2020-11-27 10:57:15.066e[0;39m e[32m INFOe[0;39m e[35m14582e[0;39m e[2m---e[0;39m e[2m[  restartedMain]e[0;39m e[36ms.w.s.m.m.a.RequestMappingHandlerMappinge[0;39m e[2m:e[0;39m Mapped "{[/api/pais/{id}],methods=[GET]}" onto public org.springframework.http.ResponseEntity<br.com.inteligate.entrevista.teste.rs.pais.PaisDTO> br.com.inteligate.entrevista.teste.rs.pais.PaisResource.get(java.lang.Integer)
e[2m2020-11-27 10:57:15.066e[0;39m e[32m INFOe[0;39m e[35m14582e[0;39m e[2m---e[0;39m e[2m[  restartedMain]e[0;39m e[36ms.w.s.m.m.a.RequestMappingHandlerMappinge[0;39m e[2m:e[0;39m Mapped "{[/api/pais/{id}],methods=[PUT]}" onto public org.springframework.http.ResponseEntity<br.com.inteligate.entrevista.teste.rs.pais.PaisDTO> br.com.inteligate.entrevista.teste.rs.pais.PaisResource.update(br.com.inteligate.entrevista.teste.rs.pais.PaisDTO,java.lang.Integer) throws java.lang.Exception
e[2m2020-11-27 10:57:15.067e[0;39m e[32m INFOe[0;39m e[35m14582e[0;39m e[2m---e[0;39m e[2m[  restartedMain]e[0;39m e[36ms.w.s.m.m.a.RequestMappingHandlerMappinge[0;39m e[2m:e[0;39m Mapped "{[/api/pais/{id}],methods=[DELETE]}" onto public void br.com.inteligate.entrevista.teste.rs.pais.PaisResource.delete(java.lang.Integer) throws java.lang.Exception
e[2m2020-11-27 10:57:15.068e[0;39m e[32m INFOe[0;39m e[35m14582e[0;39m e[2m---e[0;39m e[2m[  restartedMain]e[0;39m e[36ms.w.s.m.m.a.RequestMappingHandlerMappinge[0;39m e[2m:e[0;39m Mapped "{[/error],produces=[text/html]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)
e[2m2020-11-27 10:57:15.068e[0;39m e[32m INFOe[0;39m e[35m14582e[0;39m e[2m---e[0;39m e[2m[  restartedMain]e[0;39m e[36ms.w.s.m.m.a.RequestMappingHandlerMappinge[0;39m e[2m:e[0;39m Mapped "{[/error]}" onto public org.springframework.http.ResponseEntity<java.util.Map<java.lang.String, java.lang.Object>> org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController.error(javax.servlet.http.HttpServletRequest)
e[2m2020-11-27 10:57:15.139e[0;39m e[32m INFOe[0;39m e[35m14582e[0;39m e[2m---e[0;39m e[2m[  restartedMain]e[0;39m e[36ms.w.s.m.m.a.RequestMappingHandlerAdaptere[0;39m e[2m:e[0;39m Looking for @ControllerAdvice: org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@7902b05f: startup date [Fri Nov 27 10:57:12 BRT 2020]; root of context hierarchy
e[2m2020-11-27 10:57:15.223e[0;39m e[32m INFOe[0;39m e[35m14582e[0;39m e[2m---e[0;39m e[2m[  restartedMain]e[0;39m e[36mo.j.s.b.sql.JaversSqlAutoConfiguration  e[0;39m e[2m:e[0;39m detected Hibernate dialect: MySQL5Dialect

E @pmlm, na parte do front estou usando Angular. na versão 7, e os erros no console e network do meu navegador aparecem assim e também no postman:

{timestamp: 1606485361742, status: 500, error: "Internal Server Error",…}
error: "Internal Server Error"
message: "Unresolved compilation problem: ↵	Cannot infer type arguments for PageDto<>↵"
path: "/api/cidade/"
status: 500
timestamp: 1606485361742

Claro, eu entendo que o servidor não está se comunicando com o front. Mas, inicialmente, quanto ao back é o que eu não estou conseguindo enxergar. E já procurei bastante explicação e não vi nada similar. Por isso estou aqui pedindo ajuda.

Quando tento fazer os gets no front, tanto em cidade, estado ou país, além destes erros acima, aparecem no console do sts:

1º erro:

Cannot infer type arguments for PageDto<>
] with root cause

java.lang.Error: Unresolved compilation problem: 
	Cannot infer type arguments for PageDto<>

2º erro:

2020-11-27 11:05:14.849 ERROR 14582 --- [nio-8081-exec-2] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Handler dispatch failed; nested exception is java.lang.Error: Unresolved compilation problem: 
	Cannot infer type arguments for PageDto<>
] with root cause

java.lang.Error: Unresolved compilation problem: 
	Cannot infer type arguments for PageDto<>

3º erro:

2020-11-27 11:05:21.319e[0;39m e[31mERRORe[0;39m e[35m14582e[0;39m e[2m---e[0;39m e[2m[nio-8081-exec-3]e[0;39m e[36mo.a.c.c.C.[.[.[/].[dispatcherServlet]   e[0;39m e[2m:e[0;39m Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Handler dispatch failed; nested exception is java.lang.Error: Unresolved compilation problems: 
	The method getId() is undefined for the type PaisDTO
	The method getNome() is undefined for the type PaisDTO
	The method getSigla() is undefined for the type PaisDTO
	The method getEstados() is undefined for the type PaisDTO
] with root cause

java.lang.Error: Unresolved compilation problems: 
	The method getId() is undefined for the type PaisDTO
	The method getNome() is undefined for the type PaisDTO
	The method getSigla() is undefined for the type PaisDTO
	The method getEstados() is undefined for the type PaisDTO


4º erro:

2020-11-27 11:05:14.849 ERROR 14582 --- [nio-8081-exec-2] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Handler dispatch failed; nested exception is java.lang.Error: Unresolved compilation problem: 
	Cannot infer type arguments for PageDto<>
] with root cause

java.lang.Error: Unresolved compilation problem: 
	Cannot infer type arguments for PageDto<>

Às vezes é dificil perceber o que é um problema, do que é uma consequência do problema. Eu começaria por resolver o erro claro que aí tens: A tua entidade PaisDTO não tem definidos alguns métodos get*() que estão a ser invocados em algum lado.
A partir daí ver se os outros erros se mantém ou se algo muda.

1 curtida

@pmlm obrigado, vou fazer isto e te passo os detalhes.

@pmlm, veja como está PaisDTO.java:

package br.com.inteligate.entrevista.teste.rs.pais;

import java.util.Set;

import lombok.Data;

@Data
public class PaisDTO {

	private Integer id;
	private String nome;
	private String sigla;
	private Set<EstadoDTO> estados;	
	
}

Se ele está a dar o erro assim é porque na compilação não está a processar a anotação do lombok e não gera os getters

@pmlm mas onde você fala que deveria colocar a anotação? Nesta classe PaisDTO ou onde aparecem os erros? Vou te mandar as classes com erros para você ter uma ideia do que quero dizer…

No meu package resource, na package cidade o primeiro a dar erro é este:

EstadoResource.java:

    @RestController 
    @RequestMapping("/api/estado") 
    public class EstadoResource {
	
@Autowired
private EstadoRepository repository;
@Autowired
private EstadoResourceMapper mapper;
@Autowired
private EstadoService service; 

@GetMapping(produces = { MediaType.APPLICATION_JSON_VALUE })
public ResponseEntity<PageDto<EstadoDTO>> getPageWithQuery(@QuerydslPredicate(root = Estado.class ) Predicate predicate, Pageable pageble) {
	return ResponseEntity.ok(convertToPageDto(predicate, pageble));
}
	
@GetMapping(value = "/{id}")
public ResponseEntity<EstadoDTO> get(@PathVariable Integer id) {
	return ResponseEntity.ok(convertToDto(repository.findById(id).get()));
}

@PostMapping
public ResponseEntity<EstadoDTO> add(@Valid @RequestBody EstadoDTO dto) throws Exception {
	Estado entity = this.mapper.fromDto(dto);
	
	service.validateAdd(dto, entity);

	entity = repository.save(entity);
	
	ResponseEntity<EstadoDTO> re = ResponseEntity.ok(this.convertToDto(entity));
	
	return re;
			
}

@PutMapping(value = "/{id}")
public ResponseEntity<EstadoDTO> update(@Valid @RequestBody EstadoDTO dto, @PathVariable Integer id) throws Exception {
	
	Optional<Estado> entity = repository.findById(id);
	if (entity.isPresent()) {
		
		this.mapper.merge(entity.get(), dto);

		service.validateUpdate(dto, entity.get());

		Estado mergedEntity = repository.save(entity.get());
    	
    	ResponseEntity<EstadoDTO> re = ResponseEntity.ok(this.convertToDto(mergedEntity));
    	
		return re;
	} else {
		throw new RuntimeException();
	}
	
}	

@DeleteMapping(value = "/{id}")
public void delete(@PathVariable Integer id) throws Exception {
	
	service.validateDelete(id);
	
	repository.deleteById(id);
	
}

private PageDto<EstadoDTO> convertToPageDto(Predicate predicate, Pageable pageble) {
	Page<Estado> pageEntity = repository.findAll(predicate, pageble);
	
	return new PageDto<>(StreamSupport.stream(pageEntity.spliterator(), false).map(this::convertToDto)
			.collect(Collectors.toList()), pageEntity.getTotalElements());
}	   

private EstadoDTO convertToDto(Estado entity) {
	return mapper.toDto(entity);
}

}

o erro é: Cannot infer type arguments for PageDto<>
E fica destacado em:
return new PageDto<>(StreamSupport.stream(pageEntity.spliterator(), false).map(this::convertToDto)
.collect(Collectors.toList()), pageEntity.getTotalElements());

O segundo é na classe CidadeResourceMapperImp1.java:

@Mapper(componentModel = "spring")
public abstract class CidadeResourceMapperImp1 extends CidadeResourceMapper {

@Autowired
private EstadoRepository repository;

@Mapping(target = "estado", expression = "java(getEstado(dto.getEstado(), entity.getEstado()))")
abstract void merge(@MappingTarget Cidade entity, CidadeWriteDTO dto);

public Estado getEstado(EstadoWirteDTO estadoWirteDTO, Estado mappingTarget) {	
	return repository.findById(estadoWirteDTO.getId()).get();
}

}

Aí o erro que aparece é: The method getId() is undefined for the type EstadoWirteDTO e na sequência:

public Estado getEstado(EstadoWirteDTO estadoWirteDTO, Estado mappingTarget) {	
		return repository.findById(estadoWirteDTO.getId()).get();

Agora no package estado:

EstadoResource.java:

@RestController 
@RequestMapping("/api/estado") 
public class EstadoResource {
		
	@Autowired
	private EstadoRepository repository;
	@Autowired
	private EstadoResourceMapper mapper;
	@Autowired
	private EstadoService service; 
	
	@GetMapping(produces = { MediaType.APPLICATION_JSON_VALUE })
	public ResponseEntity<PageDto<EstadoDTO>> getPageWithQuery(@QuerydslPredicate(root = Estado.class ) Predicate predicate, Pageable pageble) {
		return ResponseEntity.ok(convertToPageDto(predicate, pageble));
	}
		
	@GetMapping(value = "/{id}")
	public ResponseEntity<EstadoDTO> get(@PathVariable Integer id) {
		return ResponseEntity.ok(convertToDto(repository.findById(id).get()));
	}

	@PostMapping
	public ResponseEntity<EstadoDTO> add(@Valid @RequestBody EstadoDTO dto) throws Exception {
		Estado entity = this.mapper.fromDto(dto);
		
		service.validateAdd(dto, entity);

    	entity = repository.save(entity);
    	
    	ResponseEntity<EstadoDTO> re = ResponseEntity.ok(this.convertToDto(entity));
    	
    	return re;
				
	}

	@PutMapping(value = "/{id}")
	public ResponseEntity<EstadoDTO> update(@Valid @RequestBody EstadoDTO dto, @PathVariable Integer id) throws Exception {
		
		Optional<Estado> entity = repository.findById(id);
		if (entity.isPresent()) {
			
			this.mapper.merge(entity.get(), dto);

			service.validateUpdate(dto, entity.get());

			Estado mergedEntity = repository.save(entity.get());
        	
        	ResponseEntity<EstadoDTO> re = ResponseEntity.ok(this.convertToDto(mergedEntity));
        	
			return re;
		} else {
			throw new RuntimeException();
		}
		
	}	

	@DeleteMapping(value = "/{id}")
	public void delete(@PathVariable Integer id) throws Exception {
		
		service.validateDelete(id);
		
		repository.deleteById(id);
		
	}
	
	private PageDto<EstadoDTO> convertToPageDto(Predicate predicate, Pageable pageble) {
		Page<Estado> pageEntity = repository.findAll(predicate, pageble);
		
		return new PageDto<>(StreamSupport.stream(pageEntity.spliterator(), false).map(this::convertToDto)
				.collect(Collectors.toList()), pageEntity.getTotalElements());
	}	   
	
	private EstadoDTO convertToDto(Estado entity) {
		return mapper.toDto(entity);
	}
		
}

o erro é: Cannot infer type arguments for PageDto<>
E fica destacado em:
return new PageDto<>(StreamSupport.stream(pageEntity.spliterator(), false).map(this::convertToDto)
.collect(Collectors.toList()), pageEntity.getTotalElements());
}

E no package pais na classe:

PaisResource.java:

@RestController 
@RequestMapping("/api/pais") 
public class PaisResource {
		
	@Autowired
	private PaisRepository repository;
	@Autowired
	private PaisResourceMapper mapper;
	@Autowired
	private PaisService service; 

	@GetMapping(produces = { MediaType.APPLICATION_JSON_VALUE })
	public ResponseEntity<PageDto<PaisDTO>> getPageWithQuery(@QuerydslPredicate(root = Pais.class ) Predicate predicate, Pageable pageble) {
		return ResponseEntity.ok(convertToPageDto(predicate, pageble));
	}
	
	@PostMapping
	public ResponseEntity<PaisDTO> add(@Valid @RequestBody PaisDTO dto) throws Exception {
		Pais entity = this.mapper.fromDto(dto);
		
		service.validateAdd(dto, entity);

    	entity = repository.save(entity);
    	
    	ResponseEntity<PaisDTO> re = ResponseEntity.ok(this.convertToDto(entity));
    	
    	return re;
				
	}

	@GetMapping(value = "/{id}")
	public ResponseEntity<PaisDTO> get(@PathVariable Integer id) {
		return ResponseEntity.ok(convertToDto(repository.findById(id).get()));
	}

	@PutMapping(value = "/{id}")
	public ResponseEntity<PaisDTO> update(@Valid @RequestBody PaisDTO dto, @PathVariable Integer id) throws Exception {
		
		Optional<Pais> entity = repository.findById(id);
		if (entity.isPresent()) {
			
			this.mapper.merge(entity.get(), dto);

			service.validateUpdate(dto, entity.get());

			Pais mergedEntity = repository.save(entity.get());
        	
        	ResponseEntity<PaisDTO> re = ResponseEntity.ok(this.convertToDto(mergedEntity));
        	
			return re;
		} else {
			throw new RuntimeException();
		}
		
	}	

	@DeleteMapping(value = "/{id}")
	public void delete(@PathVariable Integer id) throws Exception {
		
		service.validateDelete(id);
		
		repository.deleteById(id);
		
	}
	
	private PageDto<PaisDTO> convertToPageDto(Predicate predicate, Pageable pageble) {
		Page<Pais> pageEntity = repository.findAll(predicate, pageble);
		
		return new PageDto<>(StreamSupport.stream(pageEntity.spliterator(), false).map(this::convertToDto)
				.collect(Collectors.toList()), pageEntity.getTotalElements());
	}	   
	
	private PaisDTO convertToDto(Pais entity) {
		return mapper.toDto(entity);
	}
		
}

o erro é: Cannot infer type arguments for PageDto<>
E fica destacado em:
return new PageDto<>(StreamSupport.stream(pageEntity.spliterator(), false).map(this::convertToDto)
.collect(Collectors.toList()), pageEntity.getTotalElements());
}

E por fim, no package services:

A classe a dar erro é PaisServiceImp.java:

@Service
public class PaisServiceImp implements PaisService {

	@Autowired
	private PaisRepository repository;
	
	@Override
	public void validateDelete(Integer id) throws AppException {
		
		Optional<Pais> pais = repository.findById(id);
		if (!pais.isPresent())
			throw new AppException("País não encontratro");
		
		Long qtdEstados = repository.getQtdEstados(id);
		if (qtdEstados > 0)
			throw new AppException("Esse país possui um estado vinculado, favor desvincular primeiro");
	}

	@Override
	public void validateUpdate(@Valid PaisDTO dto, Pais entity) throws AppException {
		Optional<Pais> pais = repository.findByNome(dto.getNome());
		if (pais.isPresent()) {
			if (!entity.getId().equals(pais.get().getId()))
				throw new AppException("Já existe um país com esse nome");
		}
	}

	@Override
	public void validateAdd(@Valid PaisDTO dto, Pais entity) throws AppException {
		Optional<Pais> pais = repository.findByNome(dto.getNome());
		if (pais.isPresent())
			throw new AppException("Já existe um país com esse nome");
}

}

Se puder me ajudar agradeço.

O teu IDE não está a entender as anotações lombok
Que IDE usas? Eclipse? Idea? Podes ter de adicionar algum plugin para ele não te destacar esses erros

Depois, é um projeto maven? Tens a dependencia correta para o lombok?

1 curtida

@pmlm obrigado pela ajuda, eu vou instalar o plugin lombok para testar. Ainda não tinha feito isso.

Olá @pmlm, cara, você me ajudou bastante irmão. Muito obrigado. Deu certo. Reinstalei o Lombok, configurei a versão no POM e depois eu fiz as importações nas classes Getter e Setter. É a primeira vez que uso o GUJ. Tem como adicionar profile?

1 curtida