@ManyToMany会生成
@ManyToMany(cascade = CascadeType.ALL) @JoinTable(name="T_ShopCar_Product",//在数据库中会生成一个表T_ShopCar_Product,维护关系 joinColumns = {@JoinColumn(name="carid")}, //和我的主键保持一致 inverseJoinColumns = {@JoinColumn(name="pid")} //和ShopCard的主键保持一致 )
需求:购物车和产品(Product,ShopCar)
package com.oracle.bean8; import lombok.Data; import org.hibernate.annotations.GenericGenerator; import javax.persistence.*; import java.util.List; @Entity @Data @Table(name="TShopcar") public class ShopCar { @Id @GeneratedValue(generator = "uuid") @GenericGenerator(name="uuid",strategy = "uuid") private String carid; @ManyToMany(cascade = CascadeType.ALL) @JoinTable(name="T_ShopCar_Product",//在数据库中会生成一个表T_ShopCar_Product joinColumns = {@JoinColumn(name="carid")}, //和我的主键保持一致 inverseJoinColumns = {@JoinColumn(name="pid")} //和ShopCard的主键保持一致 ) private List<Product> products; }
package com.oracle.bean8; import lombok.Data; import org.hibernate.annotations.GenericGenerator; import javax.persistence.*; import java.util.List; @Entity @Data @Table(name="TProduct") public class Product { @Id @GeneratedValue(generator = "uuid") @GenericGenerator(name="uuid",strategy = "uuid") private String pid; private String pcode; private String pname; @ManyToMany(mappedBy = "products",cascade = CascadeType.ALL) private List<ShopCar> shopCars; }
package com.oracle.core; import com.oracle.bean8.Product; import com.oracle.bean8.ShopCar; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; import org.junit.After; import org.junit.Before; import org.junit.Test; import java.util.ArrayList; import java.util.List; public class ManyToMany22 { private SessionFactory sessionFactory; private Session session; @Before public void begin(){ Configuration cfg=new Configuration(); cfg.configure(); sessionFactory = cfg.buildSessionFactory(); session = sessionFactory.openSession(); session.beginTransaction(); } //在购物车里添加商品 @Test public void tets1(){ ShopCar car=new ShopCar(); Product product=new Product(); product.setPname("aaa"); product.setPcode("123456"); Product product2=new Product(); product2.setPname("bbb"); product2.setPcode("123456"); List<Product> productList=new ArrayList<>(); productList.add(product); productList.add(product2); car.setProducts(productList); session.save(car); } //查询购物车的所有商品 @Test public void query(){ ShopCar car = session.get(ShopCar.class, "8a8aac9463a5ba420163a5ba4e770000"); List<Product> products = car.getProducts(); for(Product p:products){ System.out.println(p.getPname()); } } //在购物车中添加商品 @Test public void add(){ ShopCar car = session.get(ShopCar.class, "8a8aac9463a5ba420163a5ba4e770000"); Product product=new Product(); product.setPname("米兔小飞机"); car.getProducts().add(product); // session.update(car);//update可以省略,hibernate会自动做修改操作 } //把购物车中的某个商品删除,但商品还在,只是在购物车中没有了 //删除购物车和商品的关系 public void remove(){ ShopCar car = session.get(ShopCar.class, "8a8aac9463a5ba420163a5ba4e770000"); List<Product> productList=car.getProducts(); int index=0; for(Product product:productList){ if(product.getPname().equals("aaa")){ break; } index++; } car.getProducts().remove(index);//删除关系 } //清空购物车 @Test public void qingkong(){ ShopCar car = session.get(ShopCar.class, "8a8aac9463a5ba420163a5ba4e770000"); car.getProducts().clear();//删除关系 } @After public void end(){ session.getTransaction().commit(); session.close(); sessionFactory.close(); } }