不管是单向关联仍是双向关联都是经过第三张表,将两个表中的主键放到第三张作一个关联。用第三张表来解决可能会形成数据冗余的问题。html
一个用户(User)对多个角色(Role),一个角色对多个用户。java
对象模型app
关系模型测试
实例this
下面咱们看一下实体类和映射文件的代码。spa
User.net
[java] view plain copyhibernate
Rolexml
[java] view plain copyhtm
User.hbm.xml
[html] view plain copy
Role.hbm.xml
[html] view plain copy
生成的表结构和测试数据
多对多关联映射,在实体类中,跟一对多关联映射同样,也是用集合来表示的。<set>标签中用table属性重命名中间表名称,<key>标签订义当前表的主键,用<many-to-many>标签来关联另外一张表。
对象模型
关系模型
同上
实例
下面咱们看一下实体类和映射文件的代码。
User
[html] view plain copy
Role
[java] view plain copy
User.hbm.xml
[html] view plain copy
Role.hbm.xml
[html] view plain copy
生成的表结构和测试数据
多对多双向关系中,User和Role的映射文件相同,值得注意的是生成的中间表名称必须同样,生成中间表的字段必须同样。