相关的pojo无法插入,因为它没有关于parent的外键的信息

时间:2015-01-31 15:08:03

标签: hibernate

假设我有一个名为CartItem

的班级
@Entity
@Table(name = "cart_item")
public class CartItem {

private int id;
private Integer quantity;
private Product product;
private List<CartItemProductAttribute> cartItemProductAttributes;

@OneToMany(fetch = FetchType.LAZY, mappedBy = "cartItem", cascade=CascadeType.ALL)
public List<CartItemProductAttribute> getCartItemProductAttributes() {
    return cartItemProductAttributes;
}

/*More getter - setters*/

其他相关课程为CartItemProductAttribute

@Entity
@Table(name = "cart_item_productattributes")
public class CartItemProductAttribute implements Serializable {

private int id;
private String value;
private CartItem cartItem;

@ManyToOne(fetch = FetchType.LAZY, cascade=CascadeType.ALL)
@JoinColumn(name = "CartItemId")
public CartItem getCartItem() {
    return cartItem;
}

我想要做的是:假设,我在购物车中添加了一个新商品,并且某些 X 属性与该商品相关联。所有信息都存储在CartItem对象中,其中List CartItemProductAttribute包含与此特定购物车项目关联的属性的详细信息。

两个表都有这样的关系:

cart_item

Id        - PK NN
ProductId - NN
Quantity  - NN

cart_item_product_attributes

Id         - PK NN
Value      - NN
CartItemId - NN FK

这样,cart_item_product_attributes FK 保留为cart_item。但CartItem内的CartItemProductAttributes对象包含null。因为此CartItem对象的插入失败并出现以下错误。

com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Column 'CartItemId' cannot be null

有没有办法,cart_item记录首先插入到db中,它应该为id提供新创建的cart_item记录的引用或至少CartItemProductAttribute,以便,它也可以插入属性。

标题可能会产生误导,因为我无法找到这个问题的完美标题。如果有人可以提出更好的标题,请编辑

0 个答案:

没有答案