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;
}