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来关联的,如下:

Java代码   收藏代码
  1. Broker.hbm.xml  
  2.   
  3. ..........  
  4.   
  5. <hibernate-mapping package="com.crb2b.data.bo">  
  6.     <class name="Broker" table="crb2b_broker" >  
  7.         <id name="brokId" type="java.lang.Integer">  
  8.             <column name="brokId" />  
  9.             <generator class="native"></generator>  
  10.         </id>  
  11.   
  12. <property name="brokMemberSid" type="java.lang.String">  
  13.             <column name="brokMemberSid" length="11" not-null="true" />  
  14.         </property>  
  15.   
  16. <set   
  17.             name="crb2bListcommons"   
  18.             lazy="false"                
  19.             inverse="true"  
  20.             cascade="all"     
  21.             >  
  22.             <key>  
  23.                 <column name="listMemberSid"    length="11" not-null="true" />  
  24.             </key>  
  25.             <one-to-many class="ListCommon" />  
  26.         </set>  
  
Java代码   收藏代码
  1. ListCommon.hbm.xml:  
  2.   
  3. <hibernate-mapping package="com.crb2b.data.bo">  
  4.     <class name="ListCommon" table="crb2b_listcommon" >  
  5.         <id name="licoId" type="java.lang.Integer">  
  6.             <column name="licoId" />  
  7.             <generator class="native"></generator>  
  8.         </id>  
  9.            
  10.         <many-to-one name="crb2bBroker" class="Broker" fetch="select" property-ref="brokMemberSid">  
  11.             <column name="listMemberSid" length="11" not-null="true" />  
  12.         </many-to-one>  
  13.   
  14. 详细参看:http://hi.baidu.com/piao_live/blog/item/9fa786d02706168aa0ec9ce9.html  

当referencedColumnName关联到非主键列的时候,关联的目标类必须实现Serializable,还要注意的是所映射的属性对应单个列(否则映射无效).
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值