class employee:
@Entity
@Table(name = \"Employee\")
public class Employee {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = \
There are bunch of options depends on your requirement:
1) @JsonIgnore can be used to avoid serialization of the field.
@OneToMany(mappedBy="manager")
@JsonIgnore
private Set<Employee> employees;
2) @JsonView can hide one part of the relationship as internal view (but will appear if you will write JSON object with Internal view):
@OneToMany(mappedBy="manager")
@JsonView(Views.Internal.class)
private Set<Employee> employees;
@ManyToOne(cascade={CascadeType.ALL})
@JoinColumn(name = "DepartmentID")
@JsonView(Views.Public.class)
private Department department;
3) Using custom serialiazer you can determine the rules of building your JSON object yourself.
4) Using @JsonIdentityInfo on classes (to indicate that properties of that type should have feature enabled) as well as on individual properties (to support cases where type itself can not be annotated; or to use different id generation sequence).
Example 1 @JsonIdentityInfo
Example 2 @JsonIdentityInfo
I know that this question is old but just in case someone stumbles upon this.
You've put the annotations in the wrong order. Here is my example:
@Getter
@Setter
@NoArgsConstructor
public class OutboundGoodsTypeDTO extends OutboundEntityDTO {
@JsonManagedReference
private OutboundGoodsTypeDTO parent;
@JsonBackReference
private Set<OutboundGoodsTypeDTO> goodsTypes;
}
From the documentation:
@JsonManagedReference
Annotation used to indicate that annotated property is part of two-way linkage between fields; and that its role is "parent" (or "forward") link.
@JsonBackReference
Annotation used to indicate that associated property is part of two-way linkage between fields; and that its role is "child" (or "back") link.