I am getting infinite recursion below error.
Resolved [org.springframework.http.converter.HttpMessageNotWritableException: Could not write JSON: Infinite recursion (StackOverflowError); nested exception is com.fasterxml.jackson.databind.JsonMappingException: Infinite recursion (StackOverflowError) (through reference chain: org.hibernate.collection.internal.PersistentBag[0]->com.dms.bean.DMSDocumentClass$HibernateProxy$u3IXr3xN["groups"]->org.hibernate.collection.internal.PersistentBag[0]->com.dms.bean.DMSGroupBean["docClasses"]->org.hibernate.collection.internal.PersistentBag[0]->com.dms.bean.DMSDocumentClass$HibernateProxy$u3IXr3xN["groups"]->org.hibernate.collection.internal.PersistentBag[0]->com.dms.bean.DMSGroupBean["docClasses"]->org.hibernate.collection.internal.PersistentBag[0]->com.dms.bean.DMSDocumentClass$HibernateProxy$u3IXr3xN["groups"]->org.hibernate.collection.internal.PersistentBag[0]->com.dms.bean.DMSGroupBean["docClasses"]->org.hibernate.collection.internal.PersistentBag[0]->com.dms.bean.DMSDocumentClass$HibernateProxy$u3IXr3xN["groups"]->org.hibernate.collection.internal.PersistentBag[0]->com.dms.bean.DMSGroupBean["docClasses"]->org.hibernate.collection.internal.PersistentBag[0]->com.dms.bean.DMSDocumentClass$HibernateProxy$u3IXr3xN["groups"]->org.hibernate.collection.internal.PersistentBag[0]->com.dms.bean.DMSGroupBean["docClasses"]->org.hibernate.collection.internal.PersistentBag[0]->com.dms.bean.DMSDocumentClass$HibernateProxy$u3IXr3xN["groups"]->org.hibernate.collection.internal.PersistentBag[0]->com.dms.bean.DMSGroupBean["docClasses"]->org.hibernate.collection.internal.PersistentBag[0]->com.dms.bean.DMSDocumentClass$HibernateProxy$u3IXr3xN["groups"]->org.hibernate.collection.internal.PersistentBag[0]->com.dms.bean.DMSGroupBean["docClasses"]]
Below is my code
    @Entity
    @Table(name="DMS_Document_Class")
    public class DMSDocumentClass {
        @Id
        @GeneratedValue(strategy=GenerationType.AUTO)
        @Column(name="DocumentClass_Index_ID")
        private long docClassindexID;
        @ManyToMany(fetch = FetchType.LAZY)
        @JoinTable(name = "DOCCLASS_GROUP", 
        joinColumns = {@JoinColumn(referencedColumnName ="DocumentClass_Index_ID")}, inverseJoinColumns = {@JoinColumn(referencedColumnName="groupID")})
        private List<DMSGroupBean> groups;
        @Column(name="Document_Class_Name")
        private String documentClassName;
        @Column(name="Document_Priority")
        private int documentPriority;
        @Column(name="createdDate")
        private Date createdDate;
        @Column(name="createdBy")
        private String createdBy;
another class
    @Entity
    @Table(name="DMS_Group", indexes= @Index(columnList="groupName"),
                uniqueConstraints={@UniqueConstraint(columnNames={"groupName"})})
    public class DMSGroupBean {
        @Id
        @GeneratedValue(strategy=GenerationType.AUTO)
        @Column(name="groupID")
        private long groupID;
        @Column(name="groupName")
        private String groupName;
        @Column(name="createDate")
        private Date createDate;
        @ManyToMany(mappedBy = "groups",fetch = FetchType.LAZY)
        private List<DMSUser> users;
        @ManyToMany(mappedBy = "groups",fetch = FetchType.LAZY)
        private List<DMSDocumentClass> docClasses;
        @Transient
        private String status;
I am unable to understand why I am getting this error while getting this value on UI.
    @Transactional
        public HashMap<String, Object> getDocListByFolderID(@NonNull long folderID, HttpSession session) {
            DMSFolder currentFolder = folderRepo.findById(folderID).get();
            List<DMSDocument> documents =  documentRepository.findByDocumentFolderID(folderID);
            List<DMSFolder> fetchedSubfolders = folderRepo.findByParentFolderID(folderID);
            //Allow those folder which has rights for this user
            DMSUser userInfo = (DMSUser) session.getAttribute("userinfo");
            List<DMSGroupBean> groups = userInfo.getGroups();//userInfo.getGroupRights();
            List<DMSFolder> finalSubfolders = fetchFinalSubFolders(groups, fetchedSubfolders);
            DMSFolder parentFolder = null;
            if(currentFolder.getParentFolderID() != 0) {
                parentFolder = folderRepo.findById(currentFolder.getParentFolderID()).get();
            }
            HashMap<String, Object> docList = new HashMap<String, Object>();
            docList.put("currentFolder", currentFolder);
            docList.put("documents", documents);
            docList.put("subfolders", finalSubfolders);
            docList.put("parentFolder", parentFolder);
            return docList;
        }
 
     
     
    