hibernate many to one 非主键关联 hibernate在默认情况下,从表跟主表的关联,是通过主键来关联的,但是如果双方关联的字段都不是主键的情况下,可以在<many-to-one 这方设置一下property-ref,这样就可不通过主键来关联,例如:ListCommon(是<many-to-one方)的listMemberSid字段,要跟Broker(是<one-to-many方)表的brokMemberSid字段关联,只要在ListCommon的xml中加入property-ref=“brokMemberSid”,这样就等于说明了ListCommon表是通过Broker表的brokMemberSid属性来跟Broker来关联的,如下: 。。。。 Broker.hbm.xml .......... <hibernate-mapping package="com.crb2b.data.bo"> <class name="Broker" table="crb2b_broker" > <id name="brokId" type="java.lang.Integer"> <column name="brokId" /> <generator class="native"></generator> </id> <property name="brokMemberSid" type="java.lang.String"> <column name="brokMemberSid" length="11" not-null="true" /> </property> <set name="crb2bListcommons" lazy="false" inverse="true" cascade="all" > <key> <column name="listMemberSid" length="11" not-null="true" /> </key> <one-to-many class="ListCommon" /> </set> ................... ListCommon.hbm.xml: <hibernate-mapping package="com.crb2b.data.bo"> <class name="ListCommon" table="crb2b_listcommon" > <id name="licoId" type="java.lang.Integer"> <column name="licoId" /> <generator class="native"></generator> </id> <many-to-one name="crb2bBroker" class="Broker" fetch="select" property-ref="brokMemberSid"> <column name="listMemberSid" length="11" not-null="true" /> </many-to-one>