JPA(三)之实体关系一对多(多对一)

简介:  1.背景介绍:    对于购买商品时,订单信息(Order)和订单商品信息(OrderItem)的关系就是一对多的关系。   2.实体bean:   Order.java代码   ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23

1.背景介绍:

   对于购买商品时,订单信息(Order)和订单商品信息(OrderItem)的关系就是一对多的关系。

 

2.实体bean:

  Order.java代码

 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
package com.sinoi.bean;
 
import java.util.HashSet;
import java.util.Set;
 
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;
 
@Entity
@Table(name="my_order")
public class Order {
    @Id @Column(length=12)
    private String orderId;
    @Column(nullable=false)
    private Float amount = 0f;
    @OneToMany(cascade={CascadeType.REMOVE, CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH},
            mappedBy="order")
    private Set<OrderItem> orderItems = new HashSet<OrderItem>();
    public String getOrderId() {
        return orderId;
    }
    public void setOrderId(String orderId) {
        this.orderId = orderId;
    }
    public Float getAmount() {
        return amount;
    }
    public void setAmount(Float amount) {
        this.amount = amount;
    }
     
    public Set<OrderItem> getOrderItems() {
        return orderItems;
    }
    public void setOrderItems(Set<OrderItem> orderItems) {
        this.orderItems = orderItems;
    }
    public void addOrderItem(OrderItem orderItem) {
        orderItem.setOrder(this);//这句代码不加也可!
        this.orderItems.add(orderItem);
    }
     
     
}

OrderItem.java代码

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
package com.sinoi.bean;
 
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
 
@Entity
public class OrderItem {
    @Id @GeneratedValue
    private Integer id;
    @Column(length=20, nullable=false)
    private String productName;
    @Column(nullable=false)
    private Float sellPrice;
    @ManyToOne(cascade={CascadeType.REFRESH, CascadeType.MERGE}, optional=false)
    @JoinColumn(name="item_order_for")
    private Order order;
    public Order getOrder() {
        return order;
    }
    public void setOrder(Order order) {
        this.order = order;
    }
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getProductName() {
        return productName;
    }
    public void setProductName(String productName) {
        this.productName = productName;
    }
    public Float getSellPrice() {
        return sellPrice;
    }
    public void setSellPrice(Float sellPrice) {
        this.sellPrice = sellPrice;
    }
}

 

3.测试代码

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
package junit.test;
 
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
 
import org.junit.Test;
 
import com.sinoi.bean.Order;
import com.sinoi.bean.OrderItem;
 
public class UnitTest {
    @Test
    public void save() {
        EntityManagerFactory entityManagerFactory = Persistence
                .createEntityManagerFactory("unitname");
        EntityManager entityManager = entityManagerFactory
                .createEntityManager();
        entityManager.getTransaction().begin();
         
        Order order = new Order();
        order.setOrderId("jfdkf323");
        order.setAmount(232f);
        OrderItem orderItem = new OrderItem();
        orderItem.setProductName("basketball");
        orderItem.setSellPrice(221f);
        OrderItem orderItem2 = new OrderItem();
        orderItem2.setProductName("football");
        orderItem2.setSellPrice(11f);
        orderItem.setOrder(order);
        orderItem2.setOrder(order);
        order.addOrderItem(orderItem);
        order.addOrderItem(orderItem2);
 
        entityManager.persist(order);
        entityManager.getTransaction().commit();
        entityManager.close();
        entityManagerFactory.close();
         
    }
}

 

 

4.配置文件persistence.xml和前面JPA(一)、、、一样,在此省略

目录
相关文章
|
29天前
|
SQL 前端开发 Java
利用bladex+avue实现一对多的关系
利用bladex+avue实现一对多的关系
16 0
|
4月前
|
SQL 缓存 Java
Hibernae - 双向多对一关联关系映射
Hibernae - 双向多对一关联关系映射
32 0
|
4月前
|
SQL Java 数据库连接
MyBatis 的关联关系配置 一对多,一对一,多对多 关系的映射处理
MyBatis 的关联关系配置 一对多,一对一,多对多 关系的映射处理
|
6月前
|
SQL XML 数据格式
mybatis-关联关系&一对多关联&多对一关联&多对多
mybatis-关联关系&一对多关联&多对一关联&多对多
|
9月前
|
存储 Java 数据库
JPA实现多对多关系
JPA实现多对多关系
实体,实体型,实体集,实体之间的联系
定义并解释概念模型中以下术语:实体,实体型,实体集,实体之间的联系。 (1)实体:客观存在并可以相互区分的事物叫实体。 (2)实体型:用实体名及其属性名集合来抽象和刻画同类实体称为实体型。 (3)实体集:同型实体的集合称为实体集。 (4)实体之间的联系:通常是指不同实体型的实体集之间的联系,实体之间的联系有一对一,一对多和多对多等多种类型。 ...
456 0
|
开发者
多对多关系 | 学习笔记
快速学习多对多关系。
124 0
多对多关系 | 学习笔记