【问题标题】:How to return only one time nested object in dto using mapstruct如何使用mapstruct在dto中只返回一次嵌套对象
【发布时间】:2021-02-17 02:30:47
【问题描述】:

我有一个包含他自己的实例的 dto:

class Person{
  private int id;
  private Person parent;
}

我的数据:

list<Person> persons = new Arraylist<>();
Person one = new Person(1,null);
persons.add(one);
Person two = new Person(2,one);
persons.add(two);
Person three = new Persone(3,two);
persons.add(three);

当我返回 dto 时,结果是这样的:

[
{id : 1, parent: null},
{id : 2, parent: {id : 1, parent: null}},
{id : 3, parent: {id : 2, parent: {id : 1, parent: null}}
]

我想要什么:

[
{id : 1, parent: null},
{id : 2, parent: {id : 1, parent: null}},
{id : 3, parent: {id : 2, parent: null}}
]

有没有办法使用 mapstruct 做到这一点?

【问题讨论】:

    标签: spring-boot rest dto mapstruct


    【解决方案1】:

    我通过使用 @AfterMapping 并手动删除祖父母来解决它。我不知道这是否是最好的解决方案:

    @Mapper(componentModel = "spring")
    public interface PersonMapper{
    
        PersonDto personToPersonDTO(Person person);
    
        @AfterMapping
        default void deleteGrandParents(@MappingTarget PersonDto person) {
            if (person.getParent() != null) {
                person.getParent().setParent(null);
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2021-02-15
      • 2016-10-14
      • 2020-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多