我正在使用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);
答案 0 :(得分:3)
问题是我有product_id列(子列中的连接列)为非null。 在使其可以为空之后,它起作用了。
我不知道hibernate为cascade all执行的查询。
首先,hibernate将连接列值的子条目添加为null,然后更新条目。