2016-01-11 7 views
1

Моя настройка проекта Spring Boot 1.3.1.RELEASE, Spring Data Rest.Jackson Mapping Бесконечная рекурсия. Spring Data Rest

У меня есть объект следующим образом

@Entity 
public class Criteria extends BaseEntity { 
    @OneToMany(fetch = FetchType.EAGER) 
    @JoinTable(name = "CRITERIA__GROUP", joinColumns = @JoinColumn(name = "CRITERIA__ID"), inverseJoinColumns = @JoinColumn(name = "GROUP__ID")) 
    private Set<Group> planningCriteriaGroup = new HashSet<Group>(); 
} 

@Entity 
public class Group extends BaseEntity { 
    @OneToMany(fetch = FetchType.EAGER, cascade = {CascadeType.MERGE, CascadeType.REFRESH, CascadeType.DETACH, CascadeType.PERSIST}) 
    @JoinColumn(name = "GROUP__ID") 
    private Set<Category> categories = new HashSet<Category>(0); 
} 

@Entity 
public class Category extends BaseEntity { 
    @ManyToOne(fetch = FetchType.EAGER) 
    @JsonBackReference 
    private Category parent; 

    @OneToMany(cascade = CascadeType.ALL, mappedBy = "parent", fetch = FetchType.EAGER, orphanRemoval = true) 
    @Fetch(value = FetchMode.JOIN) 
    @JsonManagedReference 
    private Set<Category> children = new HashSet<Category>(0); 
} 

Когда я локон, чтобы получить из условий, как

curl -v -X GET -H "Content-Type: application/json" "http://localhost:8080/criterias" 

Следующая ошибка брошена -

{ "метки времени": 1452510716889, "статус »: 500,« error »:« Internal Server Error »,« exception »:« org.springframework.http.converter.HttpMessageNotWritableException »,« message »:« Не удалось написать контент: Бесконечная рекурсия (StackOverflowError) (th грубая ссылочная цепочка: org.springframework.hateoas.PagedResources [\ "_ embedded \"]); Вложенное исключение - com.fasterxml.jackson.databind.JsonMappingException: Бесконечная рекурсия (StackOverflowError) (через цепочку ссылок: org.springframework.hateoas.PagedResources [\ "_ embedded \"]) "," путь ":"/criterias "}

@JsonBackReference и @JsonManagedReference, кажется, не решить проблему бесконечной рекурсии

+0

Просто разобраться очевидное:.. вы уверены, что у Джексона сконфигурированный для рассмотрения аннотаций по полям? Если да, можете ли вы придумать пример проекта, показывающий эту ошибку и файл в нашем [JIRA] (https://jira.spring.io/browse/DATAREST). –

+0

Я попробовал добавить этот @JsonAutoDetect (fieldVisibility = JsonAutoDetect.Visibility.ANY, getterVisibility = JsonAutoDetect.Visibility.NONE, setterVisibility = JsonAutoDetect.Visibility.NONE) По-прежнему нет успеха. – Ssmd

ответ

0

вы можете использовать @JsonIgnore на родителей

+0

Нет, это ** УДАЛИТЬ ** ребенка – Jon

Смежные вопросы