Работая с новым проектом, я столкнулся с велосипедной зависимостью, который не произошел в предыдущих проектах. Единственное отличие - я использую инъекцию конструктора, а не в инъекции в полевых условиях, как в предыдущих проектах. Есть ли способ исправить велосипедную зависимость?
Мой DAO выглядит так: < /p>
FieldDAO{
//other fields
@ManyToOne(targetEntity = UserDAO.class)
@JoinColumn(name = "user_id")
private UserDAO user;
}
UserDAO{
@OneToMany( mappedBy = "user", cascade = CascadeType.ALL, orphanRemoval =
true)
@ApiModelProperty(notes = "User fields")
private List fieldList;
}
< /code>
Mappers: < /p>
@Mapper(componentModel = "spring", builder = @Builder(disableBuilder = true), uses = {FieldMapper.class)
public interface UserMapper {
@Mapping(target = "id", expression = "java(toMap.getUserId().getId())")
UserDAO mapToEntity(User toMap,
@Context CycleAvoidingMappingContext cycleAvoidingMappingContext);
@Mapping(target = "userId", source = "toMap", qualifiedByName = "longToObject")
User mapToDomain(UserDAO toMap,
@Context CycleAvoidingMappingContext cycleAvoidingMappingContext);
@Named("longToObject")
default UserId fromLongToObject(UserDAO userDAO) {
return UserId.of(userDAO.getId());
}
< /code>
} < /p>
@Mapper(componentModel = "spring", builder = @Builder(disableBuilder = true), uses = {UserMapper.class, CultivationTypeMapper.class})
public interface FieldMapper {
@Mapping(target = "id", expression = "java(toMap.getFieldId().getId())")
FieldDAO mapToEntity(Field toMap,
@Context CycleAvoidingMappingContext cycleAvoidingMappingContext);
@Mapping(target = "fieldId", source = "toMap", qualifiedByName = "longToObject")
Field mapToDomain(FieldDAO toMap,
@Context CycleAvoidingMappingContext cycleAvoidingMappingContext);
@Named("longToObject")
default FieldId fromLongToObject(FieldDAO fieldDAO) {
return FieldId.of(fieldDAO.getId());
}
< /code>
} < /p>
Error:
The dependencies of some of the beans in the application context form a cycle:
┌─────┐
| userMapperImpl (field private
com.project.endpoints.field.management.FieldMapper
com.project.endpoints.user.management.UserMapperImpl.fieldMapper)
↑ ↓
| fieldMapperImpl (field private
com.project.endpoints.user.management.UserMapper com.project.endpoints.field.management.FieldMapperImpl.userMapper)
└─────┘
Подробнее здесь: https://stackoverflow.com/questions/775 ... rm-a-cycle