Hibernate中外键值的问题

在学hibernate的时候一直以为外键值是需要自己设置的(没想到是默认关联主键!!!!)
为此我在这里纠结了很久,以为需要在实体类中添加一个外键字段,手动存入外键值(囧)。
既然hibernate是外键默认关联主键,那么我们如果要关联非主键值该怎么做呢?
其实很简单,只需要在多的一方用 property-ref=“你所关联的字段名”。例如:

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>  


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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值