Note that there are some explanatory texts on larger screens.

plurals
  1. POA cycle is detected in the object graph. This will cause infinitely deep XML
    primarykey
    data
    text
    <p>I have two DTO objects say A and B which are having getters and setters and are used to take data from the database. The problem is when I am calling A, B gets called and B again points itself to A and a cycle is created. </p> <p>I cannot ignore/hide the method which is creating the cycle. I need to take the whole data of A and B.</p> <p>Is there any way to achieve it ?</p> <p>Please help</p> <p>This is my code which is causing the problem. This is application DTO which is calling environment DTO</p> <pre><code>@OneToMany(mappedBy="application", fetch=FetchType.LAZY ,cascade=CascadeType.ALL ) public Set&lt;EnvironmentDTO&gt; getEnvironment() { return environment; } public void setEnvironment(Set&lt;EnvironmentDTO&gt; environment) { this.environment = environment; } </code></pre> <p>And this is environment DTO which is calling the application DTO</p> <pre><code>@ManyToOne(targetEntity=ApplicationDTO.class ) @JoinColumn(name="fk_application_Id") public ApplicationDTO getApplication() { return application; } public void setApplication(ApplicationDTO application) { this.application = application; } </code></pre> <p>Here cycle is getting created</p> <p>This is my rest call which will give result in XML format and I think while creating XML cycle is getting created</p> <pre><code>@GET @Path("/get") @Produces({MediaType.APPLICATION_XML}) public List&lt;ApplicationDTO&gt; getAllApplications(){ List&lt;ApplicationDTO&gt; allApplication = applicationService.getAllApplication(); return allApplication; } </code></pre> <p>This is the Application DTO class</p> <pre><code>@Entity @Table(name="application") @org.hibernate.annotations.GenericGenerator( name ="test-increment-strategy",strategy = "increment") @XmlRootElement public class ApplicationDTO implements Serializable { @XmlAttribute public Long appTypeId; private static final long serialVersionUID = -8027722210927935073L; private Long applicationId; private String applicationName; private ApplicationTypeDTO applicationType; private String applicationDescription; private Integer owner; private Integer createdBy; private Integer assignedTo; private Date createTime; private Date modifiedTime; private Set&lt;EnvironmentDTO&gt; environment; @Id @GeneratedValue(generator = "test-increment-strategy") @Column(name = "applicationId") public Long getApplicationId() { return applicationId; } private void setApplicationId(Long applicationId) { this.applicationId = applicationId; } @Column(name = "applicationName") public String getApplicationName() { return applicationName; } public void setApplicationName(String applicationName) { this.applicationName = applicationName; } @ManyToOne(targetEntity=ApplicationTypeDTO.class ,fetch = FetchType.LAZY ) @JoinColumn(name="applicationType") public ApplicationTypeDTO getApplicationType() { return applicationType; } public void setApplicationType(ApplicationTypeDTO applicationType) { this.applicationType = applicationType; } @Column(name = "description") public String getApplicationDescription() { return applicationDescription; } public void setApplicationDescription(String applicationDescription) { this.applicationDescription = applicationDescription; } @Column(name = "owner") public Integer getOwner() { return owner; } public void setOwner(Integer owner) { this.owner = owner; } @Column(name = "createdBy") public Integer getCreatedBy() { return createdBy; } public void setCreatedBy(Integer createdBy) { this.createdBy = createdBy; } @Column(name = "assignedTo") public Integer getAssignedTo() { return assignedTo; } public void setAssignedTo(Integer assignedTo) { this.assignedTo = assignedTo; } @Column(name = "createTime") public Date getCreateTime() { return createTime; } public void setCreateTime(Date createTime) { this.createTime = createTime; } @Column(name = "modifiedTime") public Date getModifiedTime() { return modifiedTime; } public void setModifiedTime(Date modifiedTime) { this.modifiedTime = modifiedTime; } @OneToMany(mappedBy="application", fetch=FetchType.LAZY ,cascade=CascadeType.ALL ) public Set&lt;EnvironmentDTO&gt; getEnvironment() { return environment; } public void setEnvironment(Set&lt;EnvironmentDTO&gt; environment) { this.environment = environment; } </code></pre> <p>This is the Environment DTO class</p> <pre><code>@Entity @Table(name="environment") @org.hibernate.annotations.GenericGenerator( name = "test-increment-strategy", strategy = "increment") @XmlRootElement public class EnvironmentDTO implements Serializable { @XmlAttribute public Long envTypeId; @XmlAttribute public Long appId; private static final long serialVersionUID = -2756426996796369998L; private Long environmentId; private String environmentName; private EnvironmentTypeDTO environmentType; private Integer owner; private Date createTime; private Set&lt;InstanceDTO&gt; instances; private ApplicationDTO application; @Id @GeneratedValue(generator = "test-increment-strategy") @Column(name = "envId") public Long getEnvironmentId() { return environmentId; } private void setEnvironmentId(Long environmentId) { this.environmentId = environmentId; } @Column(name = "envName") public String getEnvironmentName() { return environmentName; } public void setEnvironmentName(String environmentName) { this.environmentName = environmentName; } @ManyToOne(targetEntity=EnvironmentTypeDTO.class) @JoinColumn(name = "envType") public EnvironmentTypeDTO getEnvironmentType() { return environmentType; } public void setEnvironmentType(EnvironmentTypeDTO environmentType) { this.environmentType = environmentType; } @Column(name = "owner") public Integer getOwner() { return owner; } public void setOwner(Integer owner) { this.owner = owner; } @Temporal(TemporalType.DATE) @Column(name = "createTime") public Date getCreateTime() { return createTime; } public void setCreateTime(Date createTime) { this.createTime = createTime; } @OneToMany(mappedBy="environment", cascade=CascadeType.ALL, fetch = FetchType.EAGER) public Set&lt;InstanceDTO&gt; getInstances() { return instances; } public void setInstances(Set&lt;InstanceDTO&gt; instances) { this.instances = instances; } @ManyToOne(targetEntity=ApplicationDTO.class ) @JoinColumn(name="fk_application_Id") //@XmlTransient public ApplicationDTO getApplication() { return application; } public void setApplication(ApplicationDTO application) { this.application = application; } </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload