2
respostas

@JsonIgnoreProperties e anotações @ManyToMany

Estou com o seguinte problema: Duas classes com relacionamentos @ManyToMany e anotação @JsonIgnoreProperties em um delas esta com o fetch = FetchType.EAGER e na outra não, mas em determinado momento precisei do relacionamento na outra ponta e anotei também com o fetch = FetchType.EAGER, daí ocorreu o problema e o meu json na view traz o dados infinitamente... como posso resolver isso, tem alguma anotação específica para esse caso?

2 respostas

Oi Clerman, esse é um problema até clássico, a maldita referência circular :). Você pode usar as annotations @JsonManagedReference e @JsonBackReference do jackson para resolver. Um jeito mais simples é simplesmente colocar um JsonIgnore em uma das pontas(talvez você não possa)... Aqui tem um boa explicação => http://www.baeldung.com/jackson-bidirectional-relationships-and-infinite-recursion

Dito isso, minha sugestão é que você não use nenhuma delas... Crie uma classe nova, o famoso DTO, deixe apenas as informações que você precisa na serialização e use as annotations do jackson nela, isso se precisar. Vai te dar um pouco mais de trabalho no inicio, só que a manutenção vai ser bem mais simples.

Olá Alberto, todos os atributos de ambas as classes são extremamente necessários para esse relacionamento. Com as anotações @JsonManagedReference e @JsonBackReference o problema se manteve. Agora quanto a sua sugestão, não vi ainda e não tenho noção de como fazer, pois me parece que está sugerindo um separação de atributos de uma entidade? É isso mesmo? Não tenho ideia como fazer! Tem uma dica?