• Empleos
  • Sobre nosotros
  • profesionales
    • Inicio
    • Empleos
    • Cursos y retos
  • empresas
    • Inicio
    • Publicar vacante
    • Nuestro proceso
    • Precios
    • Evaluaciones
    • Nómina
    • Blog
    • Comercial
    • Calculadora de salario

0

350
Vistas
El mapa de primavera de Java no puede inferir la variable de tipo R

He buscado durante mucho tiempo y no puedo encontrar una manera de resolver este problema. En mi aplicación de primavera tengo un BesoinPoseMapper

 @FunctionalInterface @Mapper(uses = BesoinPoseTranslator.class) public interface BesoinPoseMapper { @Mappings({ @Mapping(target = "nbCapteurs", source = "valeur", qualifiedByName = {"BesoinPoseTranslator", "nbCapteurs"}), @Mapping(target = "typologie", source = "typologie", qualifiedByName = {"BesoinPoseTranslator", "typologie"}), @Mapping(target = "site", source = "site", qualifiedByName = {"BesoinPoseTranslator", "emplacement"}) }) BesoinPoseDTO entityToDTO(BesoinPoseEntity entity); }

Para asignar BesoinPoseEntity a BesoinPoseDTO

Sin embargo, la función de mapa en BesoinPoseController

 public class BesoinPoseController { @Setter @Autowired private BesoinPoseRepository besoinPoseRepo; @GetMapping() public List<BesoinPoseDTO> getBesoinsPose(@RequestParam String range, @RequestParam(required = false) String status){ return StreamSupport.stream(besoinPoseRepo.findAll().spliterator(), false) .map(BesoinPoseMapper::entityToDTO) .collect(Collectors.toList()); } }

arroja un error de compilación

 .map(BesoinPoseMapper::entityToDTO); ^ required: Function<? super BesoinPoseEntity,? extends R> found: BesoinPose[...]ToDTO reason: cannot infer type-variable(s) R (argument mismatch; invalid method reference cannot find symbol symbol: method entityToDTO(BesoinPoseEntity) location: interface BesoinPoseMapper) where R,T are type-variables: R extends Object declared in method <R>map(Function<? super T,? extends R>) T extends Object declared in interface Stream

Intenté usar lambdas y cambiar los tipos de iterables a listas y matrices y volver a las secuencias, pero fue en vano, el error persiste. El compilador no puede inferir que el tipo R es BesoinPoseDTO .

Hay alguna forma de arreglar esto ?

Gracias

about 3 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Debe crear una instancia de BesoinPoseMapper , en otras palabras, un punto de entrada a la instancia una vez que se genera la implementación de su mapeador de esta manera:

 @Mapper(uses = BesoinPoseTranslator.class) public interface BesoinPoseMapper { BesoinPoseMapper INSTANCE = Mappers.getMapper(BesoinPoseMapper.class); //... }

Ahora en tu componente puedes usar:

 .map(BesoinPoseMapper.INSTANCE::entityToDTO);

o :

 private BesoinPoseMapper besoinPoseMapper = BesoinPoseMapper.INSTANCE; ... .map(besoinPoseMapper::entityToDTO);

Primavera

O porque está usando Spring, puede usar componentModel = "spring" :

 @Mapper(uses = BesoinPoseTranslator.class, componentModel = "spring")

y luego puede inyectar su mapeador en su componente como cualquier componente de resorte, por ejemplo:

 @Autowired private BesoinPoseMapper besoinPoseMapper;

  • 3.2. Mapeo de Composición (experimental)
  • 4.2. Usando la inyección de dependencia
about 3 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Nuestro proceso Comercial
Legal
Términos y condiciones Política de privacidad
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recomiéndame algunas ofertas
Necesito ayuda