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(一)、、、一样,在此省略

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

  1. PD的CDM模型中的三种实体关系

    转自:http://www.cnblogs.com/syf/articles/2480580.html PD的CDM模型中的三种实体关系 CDM是大多数开发者使用PD时最先创建的模型,也是整个数据库设 ...

  2. sql语句之多表关系 一对多 多对多

    多表的关系介绍 在实际的开发过程中,项目一定是有多张表的,且这些表之间是都有关系的 表与表之间的关系分类:一对一 一对多 多对多 一对一:A表的一行对应B表的一行,反之也成立,此时,两张表可以合并成一 ...

  3. 【Spring Data JPA自学笔记五】一对多、多对多和级联

    文章目录 数据库表的关系 一对多 多对多 Spring Data JPA实现一对多 基本配置 实现一对多 放弃维护权 Spring Data JPA实现多对多 基本配置 实现多对多 级联 之前的所有操 ...

  4. ORM框架之Spring Data JPA(三)高级查询---复杂查询

    一.spring data jpa高级查询 1.1Specifications动态查询 有时我们在查询某个实体的时候,给定的条件是不固定的,这时就需要动态构建相应的查询语句,在Spring Data ...

  5. oracle基础|数据库模型|实体-关系图(E-R图)|什么是一对一、一对多、多对多

    目录 一.前言 二.实体-关系图(E-R图) 1.实体(Entity): 2.属性(Attribute):

  6. JPA 一对一 一对多 多对一 多对多配置

    1 JPA概述 1.1 JPA是什么 JPA (Java Persistence API) Java持久化API.是一套Sun公司 Java官方制定的ORM 方案,是规范,是标准 ,sun公司自己并没 ...

  7. 单个实体内部和三个实体内部之间的关系

    单个实体内部也有一对一.一对多.多对多的关系 一对一:独生子女家庭是一个实体,一个爸爸有一个孩子,一个孩子也有一个爸爸 一对多:员工是一个实体,员工中存在着领导与被领导的关系.一个具有领导地位的员工可 ...

  8. SQLAlchemy_定义(一对一/一对多/多对多)关系

    SQLAlchemy_定义(一对一/一对多/多对多)关系 目录 Basic Relationship Patterns One To Many One To One Many To Many Basi ...

  9. 【Hibernate】Hibernate实体关系映射——单边的多对一关系

    单边的多对一关系 单边的多对一关系与单边的一对多关系刚好相反,多方有一方的引用,一方没有多方的引用,但是他们的数据表间的关系是一样的.例如:论文与论文类别: 具体实现如下: Type实体类的java注 ...

最新文章

  1. shell中判断控制语句 if case
  2. UIAlertView的使用方法
  3. Hive的内置数据类型
  4. CSP 1.0 语言规范
  5. Workbench has not been created yet
  6. windows 安装mongodb
  7. oracle导出用户下单表或者多表,导入到别的服务器用户下
  8. 以太坊智能合约Java_以太坊:调用已部署的智能合约
  9. vivado中的OOC技术
  10. MXF到MP4转换器:如何轻松地将MXF转换成MP4
  11. 如何切换水经注地图下载器中的小数度和度分秒显示
  12. 汇编语言教程 -- 寄存器
  13. 超好用的数学公式识别软件mathpix!
  14. 计算机病毒无法破坏压缩文件,求解压缩文件拒绝访问是怎么回事?
  15. 网站服务器如何直接播放视频,视频放服务器链接直接播放
  16. Mac设置重置Python3环境
  17. webdav使用mysql_如何设置WebDAV与MySQL认证Apache2(Debian Etch)
  18. 矩阵求和 c语言 简单易懂
  19. CPU 到底是怎么识别代码的?
  20. python if else写在一行_关于python:将if-elif-else语句放在一行上?

热门文章

  1. 《高性能JavaScript》第一章 加载和执行
  2. Spring IoC 源码导读
  3. Java8 Hashtable 源码阅读
  4. VTK:线性挤压用法实战
  5. boost::hana::test::TestSearchable用法的测试程序
  6. boost::histogram::histogram::fill用法的测试程序
  7. boost::geometry::model::box用法的测试程序
  8. boost::core模块实现交换std的dateorder
  9. DCMTK:DSRDocumentTree,DSRDocumentSubTree,DSRDocumentTreeNode和DSRContentItem类的测试程序
  10. VTK:可视化之Camera