一对多级联全部不是在子条目插入时设置父ID

时间:2014-06-17 18:08:56

标签: hibernate-mapping hibernate3

我正在使用Hibernate 3注释。 我有一张桌子'产品'和儿童表' product_spec'与一对多的关系。 当我做hibernateTemplate.save(产品)时,它给出了错误

无法插入:[com.xx.ProductSpec]; SQL [插入Products_spec 专栏' PRODUCT_ID'不能为空

@Entity
@Table(name = "product")
public class Product implements Serializable {

    private static final long serialVersionUID = 1L;

    @Id @GeneratedValue
    @Column(name = "PRODUCT_ID")
    private Integer productId;

    @Column(name = "PRODUCT_NAME")
    private String productName;

    @OneToMany(mappedBy = "product",fetch = FetchType.EAGER, cascade = CascadeType.ALL)
    private List<ProductSpec> specs = new ArrayList<ProductSpec>();

//getter and setter
}


@Entity
@Table(name = "Products_spec")
public class ProductSpec implements Serializable {

    private static final long serialVersionUID = 1L;

    @Id @GeneratedValue
    @Column(name = "spec_id")
    private Integer specId;

    @ManyToOne
    @JoinColumn(name = "PRODUCT_ID")
    private Product product;

    //getter and setter
}


hibernateUtil.getTemplate().save(product);

1 个答案:

答案 0 :(得分:3)

问题是我有product_id列(子列中的连接列)为非null。 在使其可以为空之后,它起作用了。

我不知道hibernate为cascade all执行的查询。

首先,hibernate将连接列值的子条目添加为null,然后更新条目。