数据库的多对多
1.1 数据库中不能直接映射多对多
处理:创建一个桥接表(中间表),将一个多对多关系转换成两个一对多
注1:数据库多表联接查询
永远就是两个表的联接查询
注2:交叉连接
注3:外连接:left(左)/right(右)/full(左右)
主从表:连接条件不成立时,主表记录永远保留,与null匹配
A B AB
select * from A,B,AB WHERE A.aID=AB.aID and b.bid = AB.bid
where
在hibernate中,你只管查询当前表对象即可,hibernate会自动关联桥接表(通过映射文件找到桥接表)以及关联表,查询出关联对象
2. hibernate的多对多
2.1 hibernate可以直接映射多对多关联关系(看作两个一对多)
案例:
多对多级联查询 书籍表、书籍类别表
实体类:
书 :book
类型:category
一本书对应多种类型 ,一种类型有多本书
Book
package com.zking.five.entity;
import java.util.HashSet;
import java.util.Set;
public class Book {
private Integer bookId;
private String bookName;
private float price;
private Set<Category> categroies=new HashSet<>();
private Integer initCategroies=0;
public Integer getInitCategroies() {
return initCategroies;
}
public void setInitCategroies(Integer initCategroies) {
this.initCategroies = initCategroies;
}
public Integer getBookId() {
return bookId;
}
public void setBookId(Integer bookId) {
this.bookId = bookId;
}
public String getBookName() {
return bookName;
}
public void setBookName(String bookName) {
this.bookName = bookName;
}
public float getPrice() {
return price;
}
public void setPrice(float price) {
this.price = price;
}
public Set<Category> getCategroies() {
return categroies;
}
public void setCategroies(Set<Category> categroies) {
this.categroies = categroies;
}
}
Category
package com.zking.five.entity;
import java.util.HashSet;
import java.util.Set;
public c