2013-03-12 84 views
0

我在購物車和計劃之間有一對多的關係。當我堅持購物車時,我想把所有的計劃都保存在購物車中。我正在使用Spring JPA Repository。我曾嘗試過單向和雙向關聯。在每種情況下,它都會失敗,並顯示以下錯誤:嵌套對象未保存JPA,Spring JPA存儲庫Oracle

org.springframework.dao.DataIntegrityViolationException:ORA-01400:無法將NULL插入(「SS」。「SS_CART_PLANS」。「 CART_ID「) ; SQL [n/a];約束[null];嵌套的例外是org.hibernate.exception.ConstraintViolationException:ORA-01400:無法將NULL插入

映射如下( 「SS」 「SS_CART_PLANS」 「CART_ID」。):

@Entity 
@Table(name = "SS_CART") 
public class Cart implements Serializable { 
private static final long serialVersionUID = 1L; 
@Id 
@SequenceGenerator(name="SS_CART_PLANS_ID_GENERATOR", sequenceName="SS_SEQ") 
@GeneratedValue(strategy=GenerationType.SEQUENCE,      generator="SS_CART_PLANS_ID_GENERATOR") 
    private long id; 

@OneToMany(cascade=CascadeType.ALL,mappedBy="cart") 
private Set<CartPlan> cartPlans; 

// uni-directional many-to-one association to SsUser 
@ManyToOne(cascade= {CascadeType.ALL }) 
@JoinColumn(name = "USER_ID") 
private User user; 

public Cart() { 
} 

public long getId() { 
    return this.id; 
} 

public void setId(long id) { 
    this.id = id; 
} 

public Set<CartPlan> getCartPlans() { 
    return this.cartPlans; 
} 

public void setCartPlans(Set<CartPlan> cartPlans) { 
    this.cartPlans = cartPlans; 
} 

/** 
* @return the user 
*/ 
public User getUser() { 
    return user; 
} 

/** 
* @param user the user to set 
*/ 
public void setUser(User user) { 
    this.user = user; 
} 

} 




    @Entity 
@Table(name="SS_CART_PLANS") 
public class CartPlan implements Serializable { 
    private static final long serialVersionUID = 1L; 

    @Id 
    @SequenceGenerator(name="SS_CART_PLANS_ID_GENERATOR", sequenceName="SS_SEQ") 
    @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="SS_CART_PLANS_ID_GENERATOR") 
    private long id; 

    @Temporal(TemporalType.DATE) 
    @Column(name="EFFECTIVE_DATE") 
    private Date effectiveDate; 

    @Column(name="ISSUER_CODE") 
    private String issuerCode; 

    @Column(name="PLAN_CODE") 
    private String planCode; 

    //bi-directional many-to-one association to SsCartPlan 
    @OneToMany(cascade=CascadeType.ALL) 
    @JoinColumn(name="PARENT_PLAN_ID") 
    private Set<CartPlan> cartPlans; 

    @ManyToOne 
    @JoinColumn(name="CART_ID") 
    @ForeignKey(name="SS_CART_PLANS_CART_FK") 
    private Cart cart; 

    //bi-directional one-to-one association to SsSearchCriteria 
    @OneToOne(cascade=CascadeType.ALL) 
    @JoinColumn(name="CRITERIA_ID") 
    private SearchCriteria searchCriteria; 

    public CartPlan() { 
    } 

    public long getId() { 
     return this.id; 
    } 

    public void setId(long id) { 
     this.id = id; 
    } 

    public Date getEffectiveDate() { 
     return this.effectiveDate; 
    } 

    public void setEffectiveDate(Date effectiveDate) { 
     this.effectiveDate = effectiveDate; 
    } 

    public String getIssuerCode() { 
     return this.issuerCode; 
    } 

    public void setIssuerCode(String issuerCode) { 
     this.issuerCode = issuerCode; 
    } 

    public String getPlanCode() { 
     return this.planCode; 
    } 

    public void setPlanCode(String planCode) { 
     this.planCode = planCode; 
    } 

    /** 
    * @return the cartPlans 
    */ 
    public Set<CartPlan> getCartPlans() { 
     return cartPlans; 
    } 

    /** 
    * @param cartPlans the cartPlans to set 
    */ 
    public void setCartPlans(Set<CartPlan> cartPlans) { 
     this.cartPlans = cartPlans; 
    } 

    /** 
    * @return the searchCriteria 
    */ 
    public SearchCriteria getSearchCriteria() { 
     return searchCriteria; 
    } 

    /** 
    * @param searchCriteria the searchCriteria to set 
    */ 
    public void setSearchCriteria(SearchCriteria searchCriteria) { 
     this.searchCriteria = searchCriteria; 
    } 

    /** 
    * @return the cart 
    */ 
    public Cart getCart() { 
     return cart; 
    } 

    /** 
    * @param cart the cart to set 
    */ 
    public void setCart(Cart cart) { 
     this.cart = cart; 
    } 

    } 

回答

0

我想在表達它之前忘記在CardPlan中設置card