Hibernate(五)多对多映射关系

  • Many to Many 映射关系(没尝试映射hibernate支持的java类型)
    • 双向多对多外键关联(XML/Annotation) (xml和annotation都实现了)
    • 单向多对多外键关联(XML/Annotation) (xml和annotation都实现了)
      注: Project中使用XML/Annotation时应统一

一、双向多对多外键关联(XML/Annotation)
  例子:多个人共同拥有多本书,多本书被多个人拥有,可相互查找修改信息
类属性变化:Book类需要添加泛型为User类的set,User类需要添加泛型为Book类的set,并提供get和set方法

  • XML

User类

<hibernate-mapping>
   <class name="test.User" table="hbn_user" >
   	<set name="books" table="hbn_users_books" >
   		<key column="uid"/>
   		<many-to-many class="test.Book" column="bid" />		
   	</set>	
   </class>
</hibernate-mapping>
<!-- set中的name:该类属性名;
table:连接表表名;key中的column:本类在连接表的名字,连接User表的主键key;
many-to-many中的column:column是连接表中多对多列的列名,class寻找Book类的主键
-->

Book类

<hibernate-mapping>
	<class name="test.Book" table="hbn_book" >
		<set name="users" table="hbn_users_books" >
			<key column="bid"/>
			<many-to-many class="test.User" column="uid" />
		</set> 	
	</class>
</hibernate-mapping>
  • Annotation:

User类

@ManyToMany()
@JoinTable(name="hbn_user_book",	
			joinColumns= {@JoinColumn(name="user_id")},	//命名关联本表id的字段
			inverseJoinColumns= {@JoinColumn(name="book_id")}
		)
private Set<Book> books = new HashSet<Book>();

Book类

@ManyToMany()
@JoinTable(name="hbn_user_book",
			joinColumns= {@JoinColumn(name="book_id")},
			inverseJoinColumns= {@JoinColumn(name="user_id")}
		)
private Set<User> users = new HashSet<User>();

二、单向多对多外键关联(XML/Annotation)
  通过省略一方的映射完成

参阅资料:
映射关系1
映射关系2

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值