我有Order
类和OrderDetails
,如下所示。现在,我在order和orderdetails之间具有one to many
关系,而在其他方向上具有one to one
。
@Entity
@Table(name = "orders")
@EntityListeners(AuditingEntityListener.class)
@JsonIgnoreProperties(value = { "createdAt" }, allowGetters = true)
public class Order implements Serializable {
@JsonView(View.V1.class)
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long orderNo;
//@NotBlank
//private String orderNo;
@JsonView(View.V1.class)
@Column(nullable = false, updatable = false)
@Temporal(TemporalType.TIMESTAMP)
@CreatedDate
private Date createdAt;
//@OneToOne(cascade = CascadeType.MERGE)
//@PrimaryKeyJoinColumn
//@OneToMany(cascade=CascadeType.ALL, fetch = FetchType.LAZY)
//@JoinColumn(name="id")
@JsonView(View.V1.class)
@OneToMany(mappedBy="order")
private Set<OrderDetails> orderDetails;
@JsonView(View.V1.class)
@Email(message="Email should be valid")
private String email;
}
可以看出,
Order
具有atrr。 set of orderDetails
。并且OrderDetails
具有attr。 Order
。因此,当我保存Order对象时,我将获得具有OrderDdrtails attr的Order对象。再次有订单属性。它具有OrderDetail等,如下所示:[{"orderNo":1,"createdAt":"2019-04-16T16:26:02.000+0000","orderDetails":[{"id":1,"itemId":1,"quantityOrdered":50,"order":{"orderNo":1,"createdAt":"2019-04-16T16:26:02.000+0000","orderDetails":
我可以做的一件事是将
order
中的orderDetails
设置为null
。但是我还有其他方法可以使用吗? 最佳答案
您可以在Order
中用OrderDetails
注释@JsonIgnore
(如果需要,也可以在Order
中注释)。这样,编组后只有孩子会显示在json中。
或者最好使用@JsonManagedReference
和@JsonBackReference
处理关系。有关它的更多信息here。基本上,您必须使用OrderDetails
注释@JsonManagedReference
的集合,并使用Order
注释@JsonBackReference
的集合。