Hibernate关联关系映射--2

2、基于连接表的单向多对一关联在关联关系可选的情况下应用也很普遍。链接表的主键为多端主键。 

<class name="Person"> 

<id name="id" column="personId"> 

<generator class="native"/> 

</id> 

<join table="PersonAddress" 

optional="true"> 

<key column="personId" unique="true"/> 

<many-to-one name="address" 

column="addressId" 

not-null="true"/> 

</join> 

</class> 



<class name="Address"> 

<id name="id" column="addressId"> 

<generator class="native"/> 

</id> 

</class> 

create table Person ( personId bigint not null primary key ) 

create table PersonAddress ( personId bigint not null primary key, addressId bigint not null ) 

create table Address ( addressId bigint not null primary key ) 



3、基于连接表的单向一对一关联非常少见,但也是可行的。 

<class name="Person"> 

<id name="id" column="personId"> 

<generator class="native"/> 

</id> 

<join table="PersonAddress" 

optional="true"> 

<key column="personId" 

unique="true"/> 

<many-to-one name="address" 

column="addressId" 

not-null="true" 

unique="true"/> 

</join> 

</class> 



<class name="Address"> 

<id name="id" column="addressId"> 

<generator class="native"/> 

</id> 

</class> 

create table Person ( personId bigint not null primary key ) 

create table PersonAddress ( personId bigint not null primary key, addressId bigint not null unique ) 

create table Address ( addressId bigint not null primary key ) 



4、多对多 

最后,还有 单向多对多关联. 主要是 在链接表中添加了联合主键 

<class name="Person"> 

<id name="id" column="personId"> 

<generator class="native"/> 

</id> 

<set name="addresses" table="PersonAddress"> 

<key column="personId"/> 

<many-to-many column="addressId" 

class="Address"/> 

</set> 

</class> 



<class name="Address"> 

<id name="id" column="addressId"> 

<generator class="native"/> 

</id> 

</class> 

create table Person ( personId bigint not null primary key ) 

create table PersonAddress ( personId bigint not null, addressId bigint not null, primary key (personId, addressId) ) 

create table Address ( addressId bigint not null primary key )

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值