복붙노트

[SPRING] 봄 부팅 Mapstruct StackOverFlow 오류

SPRING

봄 부팅 Mapstruct StackOverFlow 오류

mapstruct를 사용하여 내 엔티티 및 클래스를 매핑합니다 ... 내 매퍼 클래스의 루프에 문제가 있습니다 ...

나는 무엇을해야할지 모르겠다 ... 이것은 나의 매퍼 클래스이다.

    @Mapper(componentModel = "spring", uses = {BrandMapper.class})
public interface VehicleTypeMapper {

    VehicleTypeDTO vehicleTypetoVehicleTypeDTO(VehicleType vehicleType);

    Iterable<VehicleTypeDTO> vehicleTypetoVehicleTypeDTO(Iterable<VehicleType> vehicleTypes);

    VehicleType vehicleTypeDTOtoVehicleType(VehicleTypeDTO vehicleTypeDTO);
}

    @Mapper(componentModel = "spring", uses = { VehicleTypeMapper.class, ModelMapper.class })
public interface BrandMapper {

    BrandDTO brandtoBrandDTO(Brand brand);

    Iterable<BrandDTO> brandtoBrandDTO(Iterable<Brand> brands);

    Brand brandDTOtoBrand(BrandDTO brandDTO);
}

내 엔터티 클래스 ... DTO는 내 엔터티 클래스와 동일한 특성을가집니다 ...

@Entity
@Table(name = "tb_brand")
public class Brand implements Serializable {

    private static final long serialVersionUID = 1506494747401320985L;

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id", nullable = false)
    private Long id;

    @ManyToOne
    @JoinColumn(name = "vehicle_type_id", foreignKey = @ForeignKey(name = "fk_vehicle_type"))
    private VehicleType vehicleType;

    @JsonIgnore
    @OneToMany(mappedBy = "brand", fetch = FetchType.LAZY, cascade = CascadeType.ALL)
    private List<Model> models;

    @Column(name = "description", nullable = false)
    private String description;

//GETS AND SETS
}

@Entity
@Table(name = "tb_vehicle_type")
public class VehicleType {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id", nullable = false)
    private Long id;

    @JsonIgnore
    @OneToMany(mappedBy = "vehicleType", fetch = FetchType.LAZY, cascade = CascadeType.ALL)
    private List<Brand> brands;

    @Column(name = "description", nullable = false)
    private String description;

//GETS AND SETS
}

스택 추적

at br.com.meuveiculocerto.business.mapper.VehicleTypeMapperImpl.brandListToBrandDTOList(VehicleTypeMapperImpl.java:81) ~[classes/:na]
at br.com.meuveiculocerto.business.mapper.VehicleTypeMapperImpl.vehicleTypetoVehicleTypeDTO(VehicleTypeMapperImpl.java:33) ~[classes/:na]
at br.com.meuveiculocerto.business.mapper.BrandMapperImpl.brandtoBrandDTO(BrandMapperImpl.java:35) ~[classes/:na]
at br.com.meuveiculocerto.business.mapper.VehicleTypeMapperImpl.brandListToBrandDTOList(VehicleTypeMapperImpl.java:81) ~[classes/:na]

누군가 루핑 이유를 확인하도록 도와 줄 수 있습니까?

해결법

  1. ==============================

    1.VehicleType과 브랜드간에 주기적으로 종속됩니다. 사이클을 해결할 수있는 가능성은 3 가지입니다.

    VehicleType과 브랜드간에 주기적으로 종속됩니다. 사이클을 해결할 수있는 가능성은 3 가지입니다.

    참고 : 1.2.0 릴리스는 "즉시"제공되는 순환 매핑을 제공하지 않으므로 명시 적으로 사용자가 수행해야합니다.

  2. from https://stackoverflow.com/questions/45652298/spring-boot-mapstruct-stackoverflow-error by cc-by-sa and MIT license