我在实体购物篮和ProductOrder之间存在双向的OneToMany关系。
@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添加到购物篮并在购物篮上调用update方法时。正在创建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并引用购物篮。但是,当我尝试从前端的购物篮中记录产品时,会得到null,这很奇怪,因为方法
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
好的,我重新启动了负责这些实体的产品微服务,现在一切正常。我不知道我必须重新启动它,但这很高兴知道。