当前位置: 首页 > 知识库问答 >
问题:

使用mapstruct从单个元素映射嵌入式列表

谢旭
2023-03-14

我和mappstruct一起工作,我有一个问题,我不知道mapstruct是否能帮上忙。问题是我有一个DATA类。

public class Data {
    private String firstName;
    private String lastName;
    private String state;
    private String city;
    private String street;
    private String zipCode;
}

和地址

Entity
public class Address {
    @Id
    private Long id;
    private String state;
    private String city;
    private String street;
    private String zipCode;

和“人”

@Data
public class Person {
    @Id
    private Long id;
    private String firstName;
    private String lastName;
    private String email;
    private List<Address> list;
}```

So the person have a list of address and I want from One Data object create one adresse Object 
and add that object to Person  
So after the mapping I need to have Person with List(size == 1) of address 

the mapper 

@Mapper公共接口DataToPerson {

DataToPerson MAPPER = Mappers.getMapper(DataToPerson.class);

Person dataToPerson(Data data);

}

 is that possible ? 

Thank you so much 

共有1个答案

闻人修明
2023-03-14

为了执行这样的映射,您需要告诉MapStruct如何映射到< code >列表中

e. g.

@Mapper
public interface DataToPerson {

    DataToPerson MAPPER = Mappers.getMapper(DataToPerson.class);

    @Mapping(target = "list", source = "data")
    Person dataToPerson(Data data);

    default List<Address> dataToAddressList(Data data) {
        return data != null ? Collections.singletonList(dataToAddress(data)) : null;
    }

    Address dataToAddress(Data data);

}
 类似资料:
  • 有人能帮忙填写上面的评论部分吗?或者是否有其他选项来映射这些对象? 编辑:我尝试了下面的解决方案,但是接口实现类本身发生了变化。

  • 我如何在下面的场景中使用Mapstruct进行bean映射。 现在我想把sourceId映射到targetId,courseName映射到subjectName,studentName映射到memberName(list到list)。

  • 我有以下映射器 我期望的是将使用映射列表中的每个条目。但是当我看到生成的代码时,我有以下内容 创建并使用新的映射器方法,而不是使用。 如何告诉使用。 注意:没有的情况下,一切都很正常。

  • 我尝试使用MapStruct编写映射器类,如下所示: 目前它显示了“未知属性”“customer.customerid”和“usertypes.usertype.userid”等错误。有人能帮我用MapStruct映射所有这些元素吗? 问题2:我们如何绘制跟踪图?1)customerId usertypes->user->userid 2)pdtPrice offers->OffersType->

  • 我不确定如何将嵌套的结果集映射到域实体中。 以下是我想做的事情的大概想法: 2张桌子 域实体(包含嵌套列表) LoanEntity.java Book.java 持久实体 Loans.java Dao.xml(不知道如何映射它,尝试使用一个) 注意:此查询将复制找到的#本书的记录。 LoanMapper.java 下面的错误是我得到的: 错误:结果类型中的未知属性“books.bookName”c