![](https://img.haomeiwen.com/i1727685/e1afdf0a93af9540.png)
文章内容:
1.OnetoOne 单向 双向关联
2.ManytoOne单向 双向关联
3.OnetoMany单向 双向关联
4.ManytoMany 双向关联
1.OnetoOne 单项关联
主控端实体中放置一个被控端的实例作为属性
然后在get被控端实体的方法上用@OnetoOne和@joincolumn(name unique)来指定外键并生成相应的列
被指控端不用做任何特殊注解
我这里是以Account和address作为例子
Account作为主控端address作为被控端
Account中持有address的实例
并且要unique设置为ture,保证唯一一个address对应一个Account
![](https://img.haomeiwen.com/i1727685/eaa4397c2b45f4d9.png)
![](https://img.haomeiwen.com/i1727685/987b652fd2039b66.png)
2.OnetoOne 双向关联
只需要在上面的单向关联基础上的被控端加上同样的OnetoOne注解即可,但是里面要是mappedby
来与另一端形成关联,mappedby的值是主控端上持有的被控端实例的变量名
![](https://img.haomeiwen.com/i1727685/24996411eb0cf401.png)
1.ManytoOne单向关联
这里的例子是:多个航班(flight)对应一个公司(company)
只需要在多端持有一端的实例,然后在get方法上添加下面的注解,生成一个外键列即可
一端不需要进行特殊的注解
![](https://img.haomeiwen.com/i1727685/49fbb58f446fe767.png)
2.ManytoOne双向关联
同OnetoMany的双向是一样的
OnetoMany单向关联
这里的例子是:一个训练师(trainer)对应多个猴子(monkeys)
在训练师的类总持有一个set集合,对应多个猴子
然后建立关联表
猴子类不需要特殊的注解
![](https://img.haomeiwen.com/i1727685/a938bca488c547ae.png)
![](https://img.haomeiwen.com/i1727685/656d564ea5b22e73.png)
OnetoMany双向关联
这里的例子是:一个账户(Account)对应多个订单(orders)
在订单类里持有一个Account实例,然后子啊get方法上生成一个新的外键列
![](https://img.haomeiwen.com/i1727685/d7e7fac97ada22eb.png)
在Account类里面就用mappedby与对应的order形成关联
![](https://img.haomeiwen.com/i1727685/68a47d3c98b5dd96.png)
ManytoMany双向关联
这里的例子是:一个作者(author)有多个粉丝(followers),然后一个粉丝对应多个作者
在作者类里持有一个粉丝类的set集合,然后在get方法上进行注解配置
并生成相应的关联表
![](https://img.haomeiwen.com/i1727685/0cf5b45130a2746a.png)
![](https://img.haomeiwen.com/i1727685/6a90041246758b18.png)
另一端粉丝端只需要使用mappedBy来形成呼应,即可完成相互关联
![](https://img.haomeiwen.com/i1727685/b332c5b3ac43bd80.png)
网友评论