Add example for SolrDocument + Mapstruct
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 3/5
- Tempo estimado
- 1-2 dias
- Facilidade para iniciantes
- 35/100
- Tipo de issue
- Documentação
- Clareza
- Razoavelmente clara
- Status de atividade
- Estagnada
- Stack de tecnologia
- java
- Domínio
- documentation
Direção de pesquisa
Comece revisando os layouts de exemplo existentes em Java no repositório e, em seguida, use como ponto de partida o exemplo do issue com SolrDocument, SolrResponseWrapper, ItemDTO e ItemMapper. Adicione um exemplo focado que mostre o mapeamento baseado em wrapper e verifique se o exemplo demonstra o problema iterable-to-non-iterable relatado e sua resolução.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
It would be nice to have an example that shows how to use SolrDocument with Mapstruct.
I was trying to use MapStruct with SolrDocument and couldn't find a comprehensive example that could guide me . I was facing below issue during compiling:
Can't generate mapping method from iterable type to non-iterable type.
Reason is SolrDocument implements Iterable interface and Target DTOs doesn't .
So i came up with below solution to deal with this.
Source Class
SolrDocument
Here SolrDocument internally has Map<String,Object> _fields;
Destination Class:
`public class ItemDTO {
private String id;
private String displayName;
private String availability;
private String price;
//getter
//setter
}
}`
Error : Can't generate mapping method from iterable type to non-iterable type.
Solution:
Created SolrResponseWrapper around SolrDocument like below:
`public class SolrResponseWrapper {
private SolrDocument document;
public SolrResponseWrapper(SolrDocument document) {
this.document = document;
}
public String get(String key) {
return this.document.get(key).toString();
}
}`
Now Mapper is defined below for SolResponseWrapper to ItemDTO.
`@Mapper
public interface ItemMapper {
ItemMapper INSTANCE = Mappers.getMapper(ItemMapper);
@Mappings({
@Mapping(expression = "java(record.get("product_id"))", target = "id"),
@Mapping(expression = "java(record.get("display_name"))", target = "displayName"),
@Mapping(expression = "java(record.get("availability"))", target = "availability"),
@Mapping(expression = "java(record.get("price"))", target = "price")
})
ItemDTO convertToItemDTO(SolrResponseWrapper record);
}`
If you think this is a good addition, please let me know. I will raise PR to have it included as an example.
- Linguagem predominante
- Java
- Estrelas
- 1.4k
- Forks
- 504
- Métricas de merge de PRs
- Nenhum PR com merge em 30d
Guia de contribuição
Nenhum guia de contribuição indexado para este repositório
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de mapstruct/mapstruct-examples
-
Java 21 support Aberta
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 35/100
mapstruct/mapstruct-examples#153 · 1 comentário ·
-
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 25/100
mapstruct/mapstruct-examples#149 · 1 comentário ·
-
mapstruct-protobuf3 use lombok:UnsupportedOperationException(Collections$UnmodifiableCollection) Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 45/100
mapstruct/mapstruct-examples#142 ·
-
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 15/100
mapstruct/mapstruct-examples#138 ·
-
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 25/100
mapstruct/mapstruct-examples#128 · 1 reação ·
Todas as issues de mapstruct/mapstruct-examples
Issues semelhantes
-
certification
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 80/100
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
-
[BUG] ECR GetAuthorizationToken returns a proxyEndpoint for the default region, not the request's Abertabug ecr
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
-
Needs: Triage Type: Feature request
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 70/100
AntennaPod/AntennaPod#8794 ·
-
agentic-workflows
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 65/100
github/copilot-sdk#2760 ·