Issue
Class Jobs has Many to One relationship with Profile. When I retrieve through profileRepository.getByProfileId(id) the response returns recursive data. Also if you notice Profile has Login object. I don't want to return that as well.
@Entity
@Table(name = "tbl_profile")
@Builder(toBuilder = true)
@NoArgsConstructor
@AllArgsConstructor
@Getter
public class Profile {
@Id
@Column(name = "profile_id")
@GeneratedValue(strategy = GenerationType.AUTO)
long profileId;
@NonNull
@Column(name = "name")
String name;
@Column(name = "description", nullable = false)
String description;
@OneToOne
@JoinColumn(name = "login_id",
referencedColumnName = "login_id")
Login login;
@OneToMany(
mappedBy = "profile"
)
List<Jobs> job;
Class Jobs
@Entity
@Table(name = "tbl_job")
@Builder(toBuilder = true)
@NoArgsConstructor
@AllArgsConstructor
@Getter
public class Jobs {
@Id
@Column(name = "job_id")
@GeneratedValue(strategy = GenerationType.AUTO)
long jobId;
@NonNull
@Column(name = "job_role", nullable = false)
String joRole;
@Column(name = "description", nullable = false)
String description;
@ManyToOne
@JoinColumn(name = "profile_id",
referencedColumnName = "profile_id")
Profile profile;
}
Solution
Use @JsonIgnore to the property to ignore the output on JSON. Also according to your business logic, recheck if you need bidirectional association. You could maybe add only unidirectional association.
Answered By - Juliyanage Silva
Answer Checked By - Mary Flores (JavaFixing Volunteer)