1.背景介绍:
对于购买商品时,订单信息(Order)和订单商品信息(OrderItem)的关系就是一对多的关系。
2.实体bean:
Order.java代码
1package com.sinoi.bean; 2 3import java.util.HashSet; 4import java.util.Set; 5 6import javax.persistence.CascadeType; 7import javax.persistence.Column; 8import javax.persistence.Entity; 9import javax.persistence.FetchType; 10import javax.persistence.GeneratedValue; 11import javax.persistence.Id; 12import javax.persistence.OneToMany; 13import javax.persistence.Table; 14 15@Entity 16@Table(name="my_order") 17public class Order { 18 @Id @Column(length=12) 19 private String orderId; 20 @Column(nullable=false) 21 private Float amount = 0f; 22 @OneToMany(cascade={CascadeType.REMOVE, CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH}, 23 mappedBy="order") 24 private Set<OrderItem> orderItems = new HashSet<OrderItem>(); 25 public String getOrderId() { 26 return orderId; 27 } 28 public void setOrderId(String orderId) { 29 this.orderId = orderId; 30 } 31 public Float getAmount() { 32 return amount; 33 } 34 public void setAmount(Float amount) { 35 this.amount = amount; 36 } 37 38 public Set<OrderItem> getOrderItems() { 39 return orderItems; 40 } 41 public void setOrderItems(Set<OrderItem> orderItems) { 42 this.orderItems = orderItems; 43 } 44 public void addOrderItem(OrderItem orderItem) { 45 orderItem.setOrder(this);//这句代码不加也可! 46 this.orderItems.add(orderItem); 47 } 48 49 50}
OrderItem.java代码
1package com.sinoi.bean; 2 3import javax.persistence.CascadeType; 4import javax.persistence.Column; 5import javax.persistence.Entity; 6import javax.persistence.GeneratedValue; 7import javax.persistence.Id; 8import javax.persistence.JoinColumn; 9import javax.persistence.ManyToOne; 10 11@Entity 12public class OrderItem { 13 @Id @GeneratedValue 14 private Integer id; 15 @Column(length=20, nullable=false) 16 private String productName; 17 @Column(nullable=false) 18 private Float sellPrice; 19 @ManyToOne(cascade={CascadeType.REFRESH, CascadeType.MERGE}, optional=false) 20 @JoinColumn(name="item_order_for") 21 private Order order; 22 public Order getOrder() { 23 return order; 24 } 25 public void setOrder(Order order) { 26 this.order = order; 27 } 28 public Integer getId() { 29 return id; 30 } 31 public void setId(Integer id) { 32 this.id = id; 33 } 34 public String getProductName() { 35 return productName; 36 } 37 public void setProductName(String productName) { 38 this.productName = productName; 39 } 40 public Float getSellPrice() { 41 return sellPrice; 42 } 43 public void setSellPrice(Float sellPrice) { 44 this.sellPrice = sellPrice; 45 } 46}
3.测试代码
1package junit.test; 2 3import javax.persistence.EntityManager; 4import javax.persistence.EntityManagerFactory; 5import javax.persistence.Persistence; 6 7import org.junit.Test; 8 9import com.sinoi.bean.Order; 10import com.sinoi.bean.OrderItem; 11 12public class UnitTest { 13 @Test 14 public void save() { 15 EntityManagerFactory entityManagerFactory = Persistence 16 .createEntityManagerFactory("unitname"); 17 EntityManager entityManager = entityManagerFactory 18 .createEntityManager(); 19 entityManager.getTransaction().begin(); 20 21 Order order = new Order(); 22 order.setOrderId("jfdkf323"); 23 order.setAmount(232f); 24 OrderItem orderItem = new OrderItem(); 25 orderItem.setProductName("basketball"); 26 orderItem.setSellPrice(221f); 27 OrderItem orderItem2 = new OrderItem(); 28 orderItem2.setProductName("football"); 29 orderItem2.setSellPrice(11f); 30 orderItem.setOrder(order); 31 orderItem2.setOrder(order); 32 order.addOrderItem(orderItem); 33 order.addOrderItem(orderItem2); 34 35 entityManager.persist(order); 36 entityManager.getTransaction().commit(); 37 entityManager.close(); 38 entityManagerFactory.close(); 39 40 } 41}
4.配置文件persistence.xml和前面JPA(一)、、、一样,在此省略