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>

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

你可能感兴趣的:(Hibernate)