```java
public class Category {
@ManyToMany(targetEntity = Book.class, fetch = FetchType.EAGER)
@JoinTable(
//多對多查詢將會添加一張中間表,該中間表SpringDataJpa會自動創建
name = "book_category_middle",
//category_id 對應 Category.id 屬性名,將會在中間表中存儲 category_id 物理外鍵
joinColumns = {@JoinColumn(name = "category_id", referencedColumnName = "id")},
//book_id 對應 Book.id 屬性名,將會在中間表中存儲 book_id 物理外鍵
inverseJoinColumns = {@JoinColumn(name = "book_id", referencedColumnName = "id")}
)
private List<Book> bookList;
}
```
```java
public class Book {
//bookList 對應 Category.bookList 屬性名
@ManyToMany(mappedBy = "bookList", fetch = FetchType.EAGER)
private List<Category> categoryList;
}
```
>[warning] 如果你使用 lombok 請查看章節【注意事項】,了解一些細節。
- MapStruct屬性映射
- MapStruct是什么
- maven依賴
- 基本映射
- 字段名不一致的映射
- 字段類型不一致的映射
- 基本數據類型轉換
- 日期格式轉換
- 使用表達式轉換
- 枚舉映射
- 多個源類的映射
- 集合的映射
- 添加自定義映射方法
- 映射前后
- 添加默認值
- 映射異常處理
- SpringDataJPA
- SpringDataJPA是什么
- 與JPA、Hibernate的關系
- 環境搭建
- 簡單CURD操作
- 內部原理
- 主鍵生成策略
- 聯合主鍵
- 查詢方式
- 方法命名規則查詢
- 限制查詢結果查詢
- 注解@Query查詢
- 命名參數查詢
- SpEL表達式查詢
- 原生查詢
- 更新與刪除
- Specification動態查詢
- 核心接口
- 查詢例子
- 分頁查詢與排序
- 多表查詢
- 一對一查詢
- 一對多查詢
- 多對多查詢
- 注意事項
- Specification多表查詢
- @Query多表查詢
- 只查詢指定字段
- 級聯操作
- 加載規則