2017-08-02 13 views
0

私は休止状態の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カート

+0

投稿を見ることができますhttps://stackoverflow.com/questions/37114984/jpa-foreign-key-is-null-in-the-child-table – Akash

+0

私はCartItemを開始する必要があることを知っていますが、既にコメントされているこのコード行は、上記のようにStackOverFlowErrorを引き起こします。 –

+0

私は他のどこかに問題があると推測しています。特に、 'StackOverflowError'は、しばしば暴走的な再帰を示します。あなたが提示したものの中に、なぜそのようなことが起こるのかという手がかりはありません。いつものように、問題を実証する[mcve]は有用で適切なものになるでしょう。 –

答えて

0

ソリューションはここにある:Json (fasterxml) stackoverflow exception

問題は、RESTコントローラに私のエンティティを解析していた、あなたは@JsonIgnoreを使用する必要があります。それで私はずっと多くの時間を費やしています.-

関連する問題