`

Mixing insertable and non insertable columns in a property is not allowed

阅读更多

表 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还是复原

 

这样能解决问题,但不是好的方式。

 

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics