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模型中的三种实体关系

    PD的CDM模型中的三种实体关系 本文摘自:http://www.cnblogs.com/syf/articles/2480580.html PD 正向工程使用说明:http://download.c ...

  2. 2018.11.4 Hibernate中一对、多对多的关系

    简单总结一下 多表关系 一对多/多对一 O 对象 一的一方使用集合. 多的一方直接引用一的一方. R 关系型数据库 多的一方使用外键引用一的一方主键. M 映射文件 一: 多: 操作: 操作管理级别属 ...

  3. JPA实体关系映射:@ManyToMany多对多关系、@OneToMany@ManyToOne一对多多对一关系和@OneToOne的深度实例解析

    JPA实体关系映射:@ManyToMany多对多关系.@OneToMany@ManyToOne一对多多对一关系和@OneToOne的深度实例解析 今天程序中遇到的错误一 org.hibernate.A ...

  4. JPA总结——实体关系映射(一对多@OneToMany)

    JPA总结——实体关系映射(一对多@OneToMany) 注意:本文出自“阿飞”的博客,如果要转载本文章,请与作者联系! 并注明来源: http://blog.sina.com.cn/s/blog_4 ...

  5. Hibernate学习笔记三:对象关系映射(一对一,一对多,多对一,多对多)

    如需转载,请说明出处:http://www.cnblogs.com/gudu1/p/6895610.html Hibernate通过关系映射来表示数据库中表与表之间的关系,关系映射可以通过两种方式:配 ...

  6. Hibernate之jpa实体映射的三种继承关系

    在JPA中,实体继承关系的映射策略共有三种:单表继承策略(table per class).Joined策略(table per subclass)和Table_PER_Class策略. 1.单表继承 ...

  7. JPA 一对一 一对多 多对一 多对多配置

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

  8. Nhibernate 映射关系,一对多 多对一与多对手在映射文件中的体现。

    今天做了第一个Nhibernate项目,摸着石头过河,学到了一些东西,在这里将自己总结体会到的一些映射关系写出来,与大家分享,由于是初学者,如果有不对的地方希望大家能够指出来. 首先要说明要建立的几张 ...

  9. JPA级联(一对一 一对多 多对多)注解【实际项目中摘取的】并非自己实际应用

    下面把项目中的用户类中有个:一对一  一对多  多对多的注解对应关系列取出来用于学习      说明:项目运行正常 问题类:一对多.一对一.多对多 ============一对多 一方的设置 @One ...

随机推荐

  1. SpringCloud学习之feign

    一.关于feigin feigin是一种模板化,声明式的http客户端,feign可以通过注解绑定到接口上来简化Http请求访问.当然我们也可以在创建Feign对象时定制自定义解码器(xml或者jso ...

  2. 《Java技术》第二次作业--面向对象基础

    (一)学习总结 1.什么是构造方法?什么是构造方法的重载?下面的程序是否可以通过编译?为什么? public class Test { public static void main(String a ...

  3. iOS核心面试题

    1,请简述你对协议的理解?    protocol无论是在那个领域都是一种约束,规范.在OC中的协议主要用于在各个类之间进行回调传值. 协议有 委托方,代理方, 委托方是协议的制定者,需要声明协议的方 ...

  4. h5的localStorage和sessionStorage

    今天做了个首页的弹窗,要求是打开时显示弹窗,然后点击关闭按钮时弹窗关闭,然后点击不再显示,之后再刷新就不会有弹窗,总结一下需求. 1.弹窗显示隐藏 这个很容易,我们可以用display:none和di ...

  5. 女儿开始bababababa的发声了

    女儿八个半月,开始bababababa的发声了,而不是像以前总啊啊啊的.

  6. 一个蒟蒻对FFT的理解(蒟蒻也能看懂的FFT)

    建议同学们先自学一下"复数(虚数)"的性质.运算等知识,不然看这篇文章有很大概率看不懂. 前言 作为一个典型的蒟蒻,别人的博客都看不懂,只好自己写一篇了. 膜拜机房大佬 HY 一. ...

  7. c++ Lambda表达式待修改

    C++11引入了lambda表达式,使得程序员可以定义匿名函数,该函数是一次性执行的,既方便了编程,又能防止别人的访问. Lambda表达式的语法通过下图来介绍: 这里假设我们定义了一个如上图的lam ...

  8. AngularJs 笔记

    初识 directive 指令 ng-app 初始化一个AngularJs应用程序(通过一个值(比如 ng-app="myModule")连接到代码模块.) ng-init 初始化 ...

  9. OpenResty 执行阶段的概念和用途

    主要还是 Nginx 的执行阶段知识了,都是因为 OR 才会那么深刻, 它有些自己的阶段. 主要还是参照 春哥的 Nginx 教程 请多读几遍,如果不清楚nginx的执行阶段就无法充分利用 openr ...

  10. Hibernate使用自定义脚本替换注解或者xml文件中的自动生成表结构

    本文作者:苏生米沿 本文地址:http://blog.csdn.net/sushengmiyan/article/details/50534361 我们都清楚,可以使用hibernate的metada ...