Spring Boot — Infinite Recursion Jackson dan Hibernate JPA

Yudi Haribowo
Javan Cipta Solusi
Published in
1 min readFeb 14, 2019

Dalam mengembangkan aplikasi RESTful API, Spring menyediakan auto conversion (menggunakan Jackson) ketika aplikasi mengirim respons ke client. Perhatikan code di bawah ini.

Ketika url /user/1 di-hit, response yang akan dikembalikan oleh server adalah sebagai berikut.

Sampai sini, no issue

Misalkan karena kebutuhan aplikasi, kita membuat User belongs to UserCategory sehingga UserCategory has many User(s).

Lalu kita hit url /user/1kembali sehingga keluar-lah wall of text berikut ini a.k.a. infinite recursion error.

Hal ini terjadi karena auto conversion tadi ketika melakukan render terhadap User, juga me-render userCategory-nya. Yang mana UserCategory memiliki atribut users (Set of User) yang otomatis di-render juga. Dan ketika render Set of User tersebut, converter-nya juga kembali me-render userCategory. Begitulah seterusnya sampai infinite recursion.

Lalu, bagaimana kita menanganinya? Cara pertama adalah menggunakan anotasi JsonIgnore seperti di bawah ini.

Voila…. Error tersebut pun hilang..

Hasilnya pun tidak error dengan sebelumnya..

Namun, bagaimana jika kebutuhan aplikasi mengharuskan API Get User juga menampilkan UserCategory-nya? Karena kalau menggunakan dua solusi di atas, field userCategory tidak di-render. Insya Allah dalam tulisan berikutnya akan saya bahas :)

--

--