这个问题困扰我3天多时间了,现向各路高手求助:两张表建立非主键关联后,需要更新其中一个关联字段的值,但是更新不了,表结构配置、实体及主要代码如下:
表1:
<hibernate-mapping>
    <class name="com.tesh.entity.TComOut" table="T_ComOut" schema="dbo" catalog="tesh">
        <id name="comOutId" type="java.lang.Integer">
            <column name="comOutId" />
            <generator class="increment" />
        </id>
        <property name="comUser" type="java.lang.String">
            <column name="comUser" length="50" />
        </property>
<many-to-one name="partInfo" class="com.tesh.entity.TPartInfo" fetch="select" property-ref="oderNum">   
            <column name="partId" length="10" ></column> 
        </many-to-one>                 
    </class>
</hibernate-mapping>public class TComOut implements java.io.Serializable { // Fields private Integer comOutId;
private String comUser;
private String partId;
private TPartInfo partInfo;

public Integer getComOutId() {
return this.comOutId;
} public void setComOutId(Integer comOutId) {
this.comOutId = comOutId;
}
public String getComUser() {
return this.comUser;
} public void setComUser(String comUser) {
this.comUser = comUser;
}
public String getPartId() {
return this.partId; 
} public void setPartId(String partId) {
this.partId = partId;
}
public TPartInfo getPartInfo()
{
return this.partInfo;
}
public void setPartInfo(TPartInfo partInfo)
{
this.partInfo=partInfo;
}
}
表2:
<hibernate-mapping>
    <class name="com.tesh.entity.TPartInfo" table="T_PartInfo" schema="dbo" catalog="tesh">
        <id name="ptId" type="java.lang.Integer">
            <column name="ptId" />
            <generator class="increment" />
        </id>
<property name="oderNum" type="java.lang.String">
            <column name="oderNum" length="50" />
        </property>
<!-- <set name="outInfo" table="T_ComOut" inverse="true" cascade="all"> 
         <key>
         <column name="partId" length="10" not-null="true"/> 
         </key>
         <one-to-many class="com.tesh.entity.TComOut"/>
        </set> 这段代码注释掉也可以,是否相当于“唯一外键关联”?-->  
    </class>
</hibernate-mapping>public class TPartInfo implements java.io.Serializable { // Fields private Integer ptId;
private String oderNum;
private Set outInfo; public Integer getPtId() {
return this.ptId;
} public void setPtId(Integer ptId) {
this.ptId = ptId;
}
public String getOderNum() {
return this.oderNum;
} public void setOderNum(String oderNum) {
this.oderNum = oderNum;
}
public Set getOutInfo()
{
return this.outInfo;
}
public void setOutInfo(Set outInfo)
{
this.outInfo=outInfo;
}
}
主要功能代码:
TComOut comout = new TComOut();
comout.setComUser(outForm.getComUser());
comout.setPartId(outForm.getPartId());  //这句代码执行不了,就是那个partId字段无法添加数据,其它字段都能正常添加数据实际的需求是TComOut表中的某些记录与TPartInfo不需要建立关联关系(大部分记录是多对一关系),即partId字段与TPartInfo的oderNum不需要对应,而是由用户通过页面表单填写进去的,而现在只有partId字段无法填写数据,其它的正常,请问如何才能更新partID的值,而且希望是直接更新,最好不通过TPartInfo执行,请各路高手指点一下,先谢谢了。