hibernate 的one2one映射关系中,在其双向外键关联的时候使用 mappedby 的作用?
答案:1 悬赏:80 手机版
解决时间 2021-04-10 16:01
- 提问者网友:情歌越听越心酸
- 2021-04-10 11:45
hibernate 的one2one映射关系中,在其双向外键关联的时候使用 mappedby 的时候,貌似是为了去除冗余数据,但是,假如使用mappedby之后,就只有一个表(对应类)外键引用另一个表(类)的主键,那么这样不就变成的一对一单向外键关联吗,那双向又有什么意义?还是一对一,就是这么特别?
最佳答案
- 五星知识达人网友:摆渡翁
- 2021-04-10 13:03
我最近也看了这个,呵呵 我谈谈我的看法,你看能不能这样理解
比如说:Person和IdCard,在IdCard里面用mappedBy.
如果没有mappedBy,两边都加OneToOne的话,两边都以对方的主键作为外键。这样冗余大了点。
单向的时候,可以通过Person找到IdCard。双向的时候也可以通过IdCard找到Person.
加了mappedBy的话,只在Person里面加了外键。我们在IdCard类里有一个Person属性,当get或load一个IdCard的时候,hibernate看到了你在这个OneToOne里面加了一个mappedBy,所以会去Person类对应的表里去找一个外键与你要get的IdCard的主键相同的记录,放到IdCard的person属性中。这样也就能更具IdCard来找到Peorson了,也就实现了所谓的双向关联。
比如说:Person和IdCard,在IdCard里面用mappedBy.
如果没有mappedBy,两边都加OneToOne的话,两边都以对方的主键作为外键。这样冗余大了点。
单向的时候,可以通过Person找到IdCard。双向的时候也可以通过IdCard找到Person.
加了mappedBy的话,只在Person里面加了外键。我们在IdCard类里有一个Person属性,当get或load一个IdCard的时候,hibernate看到了你在这个OneToOne里面加了一个mappedBy,所以会去Person类对应的表里去找一个外键与你要get的IdCard的主键相同的记录,放到IdCard的person属性中。这样也就能更具IdCard来找到Peorson了,也就实现了所谓的双向关联。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯