Spring Boot 如何使用ModelMapperMap一对多

vql8enpb  于 2022-11-23  发布在  Spring
关注(0)|答案(3)|浏览(192)

我正在使用springBoot,我想将OneToMany关系从父级Map到子级。直接使用entityeager获取我得到递归记录,因此,尝试使用ModelMapperDTOMap到Entity,但我不知道如何操作。请假设getterssetters

父代.java

@Entity
public class Parent {

    @Id
    private int parentId;

    private String a;

    @OneToMany(mappedBy = "parent")
    private Set<Child> child;

子项.java

@Entity
public class Child {

    @Id
    private int childId;

    private String c;

    @ManyToOne
    @JoinColumn(name = "b")
    private Parent parent;

我有工作存储库和服务层与findAll方法。

将父数据转换为.java

public class ParentDto {

    private String a;

    private Set<Child> child;

父控制器.java

@RestController
public class ParentController {

    @Autowired
    private ModelMapper modelMapper;

    @Autowired
    private ParentService parentService;

    @RequestMapping(method = RequestMethod.GET, value="/parents" )
    public List<ParentDto> getParents() {
        List<Parent> parents =  parentService.getAll();
        return parents.stream()
                .map(x-> modelMapper.map(x, ParentDto.class))
                .collect(Collectors.toList());
    }
}

**错误:**尝试提取http://localhost:8080/parents

.
.
ModelMapper mapping errors: 1) Converter org.modelmapper.internal.converter.CollectionConverter@51381583 failed to convert java.util.Set to java.util.Set. 1 error
org.modelmapper.MappingException: ModelMapper mapping errors:

1) Converter org.modelmapper.internal.converter.CollectionConverter@51381583 failed to convert java.util.Set to java.util.Set.

1 error
    at org.modelmapper.internal.Errors.throwMappingExceptionIfErrorsExist(Errors.java:380)
    at org.modelmapper.internal.MappingEngineImpl.map(MappingEngineImpl.java:80)
.
.
zsbz8rwp

zsbz8rwp1#

这与“N + 1”和“无限递归”问题无关,可能是在Map器中增加了Conver方法;使用ModelMapper https://amydegregorio.com/2018/10/03/mapping-children-with-modelmapper/Map子项

vmjh9lq9

vmjh9lq93#

您需要在子实体中定义的父Map上使用@JsonIgnore注解。
有关详细信息,请参阅此文档-https://fasterxml.github.io/jackson-annotations/javadoc/2.5/com/fasterxml/jackson/annotation/JsonIgnore.html

相关问题