私は休止状態のjpaの関係にいくつかの問題があります。私はOneToMany関係を作成したいと思いますが、オブジェクト "1"をベースにしてテーブルの "many"カラムに外部キーが含まれている場合は常にnullです。それは、(完璧な作品)注文とOneToMany関係が含まれていjpaの1対多の関係、常に外部キーのヌル
@OneToOne(fetch=FetchType.LAZY, mappedBy="customer", cascade = CascadeType.ALL)
private Address billingAddress;
@Column(name="phone_address")
private String phoneNumber;
@OneToMany(fetch=FetchType.EAGER, mappedBy="customer")
private List<Order> orders;
: は、私の場合は、クラスお客様を持っています。 注文クラス:
@Id
@GeneratedValue
@Column(name="order_id")
private Long orderId;
@OneToOne(fetch=FetchType.LAZY, mappedBy="order", cascade = CascadeType.ALL)
private Cart cart;
@ManyToOne
@JoinColumn(name="customer_id")
private Customer customer;
@OneToOne(fetch=FetchType.LAZY, mappedBy="order", cascade = CascadeType.MERGE)
private Address shippingDetail;
注文クラスはカート(OneToOne)が含まれています
public void addCartItem(CartItem item){
Long productId = item.getProduct().getProductId();
if(cartItems.containsKey(productId)){
CartItem existingCartItem = cartItems.get(productId);
existingCartItem.setQuantity(existingCartItem.getQuantity() + item.getQuantity());
cartItems.put(productId, existingCartItem);
}else{
cartItems.put(productId, item);
//item.setCart(this);
}
updateGrandTotal();
}
:ここ
@Id
@GeneratedValue
@Column(name="base_id")
private Long baseId;
@Column(name="cart_id")
private String cartId;
@OneToMany(fetch = FetchType.EAGER, mappedBy = "cart", cascade = CascadeType.ALL)
@MapKeyColumn(name = "items_keys")
private Map<Long, CartItem> cartItems;
@Column(name="grand_total")
private BigDecimal grandTotal;
@OneToOne(fetch = FetchType.LAZY)
@PrimaryKeyJoinColumn
private Order order;
はaddCartItem方法カートにクラスであります
そして、ここには、カートが含まれていなければなりませんCartItem地図でOneToMany関係で動作しません。 CartItemクラス:
@Id
@GeneratedValue
private long id;
@OneToOne(fetch=FetchType.LAZY, mappedBy="cartItem", cascade = CascadeType.MERGE)
private Product product;
private int quantity;
private BigDecimal totalPrice;
@ManyToOne
private Cart cart;
は、私の知る限り、私はCartItemで外部キーを開始する必要が知っているように、私はaddCartItem方法でそれを実行しようとしましたが、私はそうするとき、にStackOverflowErrorがあります。私は何かや方法を逃したかCartItemとカート?
投稿を見ることができますhttps://stackoverflow.com/questions/37114984/jpa-foreign-key-is-null-in-the-child-table – Akash
私はCartItemを開始する必要があることを知っていますが、既にコメントされているこのコード行は、上記のようにStackOverFlowErrorを引き起こします。 –
私は他のどこかに問題があると推測しています。特に、 'StackOverflowError'は、しばしば暴走的な再帰を示します。あなたが提示したものの中に、なぜそのようなことが起こるのかという手がかりはありません。いつものように、問題を実証する[mcve]は有用で適切なものになるでしょう。 –