表 customer(company_code varchar(10),customer_id varchar(10));
其主键是company_code 和customer_id 复合主键
表 Order(company_code,order_id,customer_id)
其中company_code 和order_id 是复合主键,company_code 和customer_id 引用cusotmer
我用的是 hibernate3 的annotations作为映射的,由myeclipse平台插件生成
但是在插入order时,会发现hibernate生成的insert sql中没有customer_id,因此customer_id的值总是空值,尽管你的PO Order中有值。
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumns( {
@JoinColumn(name="COMPANY_CODE", referencedColumnName="COMPANY_CODE", nullable=false, insertable=false, updatable=false),
@JoinColumn(name="CUSTOMER_ID", referencedColumnName="CUST_CODE", nullable=false, insertable=false, updatable=false) } )
后来我将以上的insertable改成true
出现:Mixing insertable and non insertable columns in a property is not allowed
目前解决办法是在Order中再添加一个property:customerId
private String customerId;
@Column(name="CUSTOMER_ID", length=10)
public String getCustomerId() {
return customerId;
}
public void setCustomerId(String customerId){
this.customerId=customerId;
}
insertabel还是复原
这样能解决问题,但不是好的方式。