• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

349
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error