Отношения один ко многим и один к одному, используя спящий режим - PullRequest
1 голос
/ 16 апреля 2019

У меня есть 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 имеет атр.set of orderDetailsOrderDetails имеет атрибут.Order.В связи с этим, когда я сохраняю объект Order, я получаю объект Order, имеющий атрибут OrderDdrtails attr.который имеет снова заказ attr.который имеет 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.Но есть ли другой подход, который я могу использовать?

1 Ответ

1 голос
/ 16 апреля 2019

Вы можете комментировать Order в своем OrderDetails с помощью @JsonIgnore (или в Order, если хотите). Таким образом, только дети будут показаны в JSON после сортировки.

Или лучше использовать @JsonManagedReference и @JsonBackReference для обработки отношений. Подробнее об этом здесь . По сути, вам придется аннотировать набор OrderDetails с помощью @JsonManagedReference и Order с помощью @JsonBackReference.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...