使用休眠一对一和一对一关系

时间:2019-04-16 16:28:45

标签: java spring hibernate spring-boot jpa

我有File storageDir= getExternalFilesDir(Environment.DIRECTORY_PICTURES); 类和File storageDir= new File(getExternalFilesDir(Environment.DIRECTORY_PICTURES)); ,如下所示。现在,我在order和orderdetails之间具有Order关系,而在另一个方向上具有OrderDetails

one to many

可以看出one to one具有atrr。 @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有一个attr。 set of orderDetails。因此,当我保存Order对象时,我将获得具有OrderDdrtails attr的Order对象。再次有订单属性。其中包含OrderDetail等,如下所示:

OrderDetails

我可以做的一件事是将Order内的[{"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。但是我还有其他方法可以使用吗?

1 个答案:

答案 0 :(得分:1)

您可以在Order中用OrderDetails注释@JsonIgnore(或者,如果需要,也可以在Order中注释)。这样,编组后只有孩子会显示在json中。

或者更好地使用@JsonManagedReference@JsonBackReference处理关系。有关here的更多信息。基本上,您必须使用OrderDetails注释@JsonManagedReference的集合,并用Order注释@JsonBackReference的集合。