У меня двунаправленное отношение OneToMany между корзиной Entite и ProductOrder.
@OneToMany(mappedBy = "basket", cascade = CascadeType.ALL)
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
private Set<ProductOrder> products = new HashSet<>();
и
@ManyToOne
@JsonIgnoreProperties("products")
private Basket basket;
Когда я добавляю новый productOrder в корзину и вызываю метод обновления длякорзина.ProductOrder создается, но не получает ссылку на корзину, в результате чего корзина не имеет productOrders!
Я попытался установить корзину из productOrder, но затем она заканчивается в бесконечном круге, и я получаю:
ОШИБКА TypeError: Преобразование круговой структуры в JSON
Итак, мой вопрос, как обрабатывать двунаправленные отношения в jhipster?
Вот как я хотел бы обновить свою корзину:
test-component.ts
intoBasket(product, amount) {
this.productOrder = new ProductOrder();
this.productOrder.product = product;
this.productOrder.amount = amount;
this.basketService.find(+this.account.id).subscribe((res: HttpResponse<Basket>) => {
this.basket = res.body;
this.productOrder.basket = this.basket;
this.basket.products.push(this.productOrder);
this.basketService.update(this.basket).subscribe((res: HttpResponse<Basket>) => {
console.log("test");
});
});
}
спасибо!
Обновление
Я переместил некоторую логику с внешнего интерфейса на внутренний:
BasketService.java
public Basket save(Basket basket) {
log.debug("Request to save Basket : {}", basket);
log.info(basket.getProducts().toString());
basket.getProducts().stream().forEach(p -> p.setBasket(basket));
return basketRepository.save(basket);
}
это правильно сохраняет ProductOrders со ссылкой на корзину.Но когда я пытаюсь зарегистрировать товары из корзины во внешнем интерфейсе, я получаю нулевое значение, что является странным, поскольку метод
this.basketService.update(this.basket).subscribe((res: HttpResponse<Basket>) => {
console.log(res.body.products);
});
фактически возвращает корзину, заполненную новым продуктом.Но, похоже, это не спасает его, потому что когда я запрашиваю эту конкретную корзину "/ baskets / 39", в ответе пропускаются товары:
{id: 39, totalPrice: 0, customerId: 39, products: null}
Обновление 2
хорошо, я перезапустил микросервис продукта, который отвечает за эти объекты, и теперь все работает нормально.Я не знал, что мне пришлось его перезапустить, но это приятно знать, наверное.