Category 類 private Integer id; private String categoruyName; private Set<Item> items=new HashSet<>(); @ManyToMany(mappedBy="categories") public Set<Item> getItems() { return items; } Item 類 private Integer id; private String itemName; private Set<Category> categories=new HashSet<Category>(); //使用@JoinTable映射中間表 //①name中間表的名字 //②joinColumns映射當前類所在中間表的外鍵 //>name:指定外鍵列的列名 //>referencedColumnName指定外鍵列關聯(lián)當前表的哪一列 //③inverseJoinColumns映射關連中間表的屬性 @JoinTable(name="ITEM_CATEGORY",joinColumns={@JoinColumn(name="ITEM_ID",referencedColumnName="ID")} ,inverseJoinColumns={@JoinColumn(name="CATEGORY_ID",referencedColumnName="ID")}) @ManyToMany public Set<Category> getCategories() { return categories; } 測試類: // 默認會對關聯(lián)多的一方使用懶加載策略 @Test public void testManyToManyFind() { Item item=entityManager.find(Item.class, 1); System.out.println(item.getItemName()); System.out.println(item.getCategories().size()); } //多對多的保存 @Test public void testManyToManyPersist() { Item item1=new Item(); item1.setItemName("I-1"); Item item2=new Item(); item2.setItemName("I-2"); Category category1=new Category(); category1.setCategoruyName("C-1"); Category category2=new Category(); category2.setCategoruyName("C-2"); item1.getCategories().add(category1); item1.getCategories().add(category2); item2.getCategories().add(category1); item2.getCategories().add(category2); category1.getItems().add(item1); category1.getItems().add(item2); category2.getItems().add(item1); category2.getItems().add(item2); //保存操作 entityManager.persist(item1); entityManager.persist(item2); entityManager.persist(category1); entityManager.persist(category2); } |
|
來自: 魏祖清 > 《數(shù)據(jù)表關聯(lián)》