Я пытаюсь использовать модель-маппер с двунаправленными сущностями, что дает мне StackOverFlow.
Мои сущности:
public class EntityA {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@OneToMany(mappedBy="entityA", cascade = CascadeType.PERSIST, fetch = FetchType.EAGER)
private Set<EntityB> bSet = new HashSet<EntityB>(0);
public void setBSet(Set<EntityC> bSet ) {
bSet.forEach(f -> c.setEntityA(this));
this.bSet = bSet;
}
//Other setters and getters
}
public class EntityB {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "entityA_id"))
private EntityA entityA;
@OneToMany(mappedBy="entityB", cascade = CascadeType.PERSIST, fetch = FetchType.EAGER)
private Set<EntityC> cSet = new HashSet<EntityC>(0);
public void setCSet(Set<EntityC> cSet ) {
cSet .forEach(f -> c.setEntityB(this));
this.cSet = cSet ;
}
//Other setters and getters
}
public class EntityC {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "entityB_id"))
private EntityB entityB;
//setters and getters
}
Мои DTO
public class DtoA {
private Long id;
private Set<DtoB> bSet = new HashSet<DtoB>(0);
//setters and getters
}
public class DtoB{
private Long id;
private Set<DtoC> cSet = new HashSet<DtoC>(0);
//setters and getters
}
public class DtoC {
private Long id;
//setters and getters
}
Итак, когда ясделать следующий код у меня был переполнение стека для рекурсивности сущностей.
modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);
modelMapper.getConfiguration().map(dto, EntityA.class);
Я пытаюсь добавить эту конфигурацию, но проблема сохраняется:
modelMapper.getConfiguration().setFieldAccessLevel(AccessLevel.PRIVATE);
modelMapper.getConfiguration().setFieldMatchingEnabled(true);
Как я могу решить эту проблему?