JPA中,一对多关系使用@OneToMany标示

关系维护端:

 package com.yl.demo1.bean.oneTomany;

 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 { private Integer id;
private String productName;
private Float sellPrice;
private Order order; @Id @GeneratedValue
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
@Column(length=40, nullable=false)
public String getProductName() {
return productName;
}
public void setProductName(String productName) {
this.productName = productName;
}
@Column(nullable=false)
public Float getSellPrice() {
return sellPrice;
}
public void setSellPrice(Float sellPrice) {
this.sellPrice = sellPrice;
}
/**
* optional代表属性是否可选,
* true--代表字段可为空
* false--代表字段不允许为null
*
* @JoinColumn---指定外键的名称
*/
@ManyToOne(cascade={CascadeType.MERGE, CascadeType.REFRESH}, optional=true)
@JoinColumn(name="order_id")
public Order getOrder() {
return order;
}
public void setOrder(Order order) {
this.order = order;
} }

关系被维护端:

 package com.yl.demo1.bean.oneTomany;

 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.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;
/**
* JPA中,1-m的双向关系中,多的一方为关系维护端,关系维护端服务外键记录的更新,关系被维护端是没有权利更新外键记录的
*
*
*/
@Entity
@Table(name="orders")
public class Order {
private String orderId;
private Float amount = 0f;
private Set<OrderItem> items = new HashSet<OrderItem>(); @Id @Column(length=12)
public String getOrderId() {
return orderId;
}
public void setOrderId(String orderId) {
this.orderId = orderId;
}
@Column(nullable=false)
public Float getAmount() {
return amount;
}
public void setAmount(Float amount) {
this.amount = amount;
}
/**级联操作
* CascadeType.REFRESH--select order, select OrderItem
* CascadeType.PERSIST--insert into Order, insert into OrderItem
* CascadeType.MERGE----当Order处于游离状态时,对Order更新,也会更新OrderItem--update Order, for(update OrderItem)
* CascadeType.REMOVE---delete Order, delete OrderItem
* 可以采用CascadeType.ALL包括上述四种.
* 上述四种方法只有调用相应的方法时才会触发。即EntityManager.refresh(),EntityManager.persist(),EntityManager.merge(), EntityManager.remove()
*
* *ToMany的fetch默认值为FetchType.LAZY
* *ToOne的fetch默认值为FetchType.EAGER
*
*
* mappedBy出现在关系的被维护端,它指定在关系维护端是由哪个属性进行维护关系
*/
@OneToMany(cascade={CascadeType.REFRESH, CascadeType.PERSIST}
, fetch=FetchType.LAZY
, mappedBy="order")
public Set<OrderItem> getItems() {
return items;
}
public void setItems(Set<OrderItem> items) {
this.items = items;
} public void addOrderItem(OrderItem orderItem) {
orderItem.setOrder(this);
this.items.add(orderItem);
} }

常见操作:

 @Test
public void save() {
EntityManagerFactory factory = Persistence.createEntityManagerFactory("YL");
EntityManager em = factory.createEntityManager();
em.getTransaction().begin();//事务开始 Order order = new Order();
order.setAmount(34f);
order.setOrderId("999"); OrderItem orderItem1 = new OrderItem();
orderItem1.setProductName("football");
orderItem1.setSellPrice(90f); OrderItem orderItem2 = new OrderItem();
orderItem2.setProductName("basketball");
orderItem2.setSellPrice(100f); order.addOrderItem(orderItem1);
order.addOrderItem(orderItem2); em.persist(order); em.getTransaction().commit();
em.close();
factory.close();
}

JPA-一对多关系的更多相关文章

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

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

  2. JPA中映射关系详细说明(一对多,多对一,一对一、多对多)、@JoinColumn、mappedBy说明

    JPA中的映射关系 jpa中维护one to one ,one to many, many to one ,many to many 四种映射关系. 在每个关系中,双方中的一方在其表中拥有连接列.那么 ...

  3. JPA一对多关联

    关于JPA一对多关联这里使用Order与OrderItem来模拟.一个Order可以关联多个OrderItem,而一个OrderItem只能关联一个Order.Order与OrderItem是一对多的 ...

  4. jpa 一对多and 多对一

    配置: <?xml version="1.0" encoding="UTF-8"?> <persistence version="2 ...

  5. spring data jpa 一对多查询

    在一对多关系中,我们习惯把一的一方称之为主表,把多的一方称之为从表.在数据库中建立一对多的关系,需要使用数据库的外键约束. 什么是外键? 指的是从表中有一列,取值参照主表的主键,这一列就是外键. pa ...

  6. 10.Configure One-to-Many(配置一对多关系)【Code-First系列】

    现在,我们将学习怎么配置一对多的关系. Visit Entity Relationship section to understand how EF manages one-to-one, one-t ...

  7. Mybatis框架中实现双向一对多关系映射

    学习过Hibernate框架的伙伴们很容易就能简单的配置各种映射关系(Hibernate框架的映射关系在我的blogs中也有详细的讲解),但是在Mybatis框架中我们又如何去实现 一对多的关系映射呢 ...

  8. [NHibernate]一对多关系(级联删除,级联添加)

    目录 写在前面 文档与系列文章 一对多关系 一个例子 级联删除 级联保存 总结 写在前面 在前面的文章中,我们只使用了一个Customer类进行举例,而在客户.订单.产品中它们的关系,咱们并没有涉及, ...

  9. [NHibernate]一对多关系(关联查询)

    目录 写在前面 文档与系列文章 一对多查询 总结 写在前面 上篇文章介绍了nhibernate的一对多关系如何配置,以及级联删除,级联添加数据的内容.这篇文章我们将学习nhibernate中的一对多关 ...

  10. [Fluent NHibernate]一对多关系处理

    目录 写在前面 系列文章 一对多关系 总结 写在前面 上篇文章简单介绍了,Fluent Nhibernate使用代码的方式生成Nhibernate的配置文件,以及如何生成持久化类的映射文件.通过上篇的 ...

随机推荐

  1. SQL Server数据库备份(异机)

    简单的远程异机备份数据库功能,通过这个存储过程,讲远程其他机器上的数据库备份到本地.其主要原理为: 1.通过XP_CMDSHELL执行Windows命令,将本机的共享目录映射为远程机器的网络驱动器. ...

  2. Contest2037 - CSU Monthly 2013 Oct(中南大学2013年10月月赛水题部分题解)

    Problem A: Small change 题解:http://www.cnblogs.com/crazyapple/p/3349469.html Problem B: Scoop water 题 ...

  3. TCP/IP长连接和短连接

    http://www.cnblogs.com/bigwalnut/articles/2129070.html TCP/IP通信程序设计的丰富多样性 刚接触TCP/IP通信设计的人根据范例可以很快编出一 ...

  4. 1063: [Noi2008]道路设计 - BZOJ

    Description Z 国坐落于遥远而又神奇的东方半岛上,在小Z 的统治时代公路成为这里主要的交通手段.Z 国共有n 座城市,一些城市之间由双向的公路所连接.非常神奇的是Z 国的每个城市所处的经度 ...

  5. SQL的集合运算符介绍

    最近学习了SQL SERVER方面的知识,毕竟做Web应用,少不了跟数据库打交道.学习的来源主要是<程序员的SQL金典>这本书. 今天介绍数据库里面的集合运算符,它是指匹配集合的每一个结果 ...

  6. 手机开发类型jquery的框架Zepto(API)

    Zepto是一个轻量级的针对现代高级浏览器的JavaScript库, 它与jquery有着类似的api. 如果你会用jquery,那么你也会用zepto. http://www.html-5.cn/M ...

  7. List<T> 排序

    List<T>的排序 List<DataPoint> dataPointsDataPints = ...; //按RegisterAddress升序排序 dataPointsD ...

  8. robots.txt协议-互联网robots搜索规范

    最近在看搜索爬虫相关的,挺有趣的,记录一些信息备用. robots.txt官方说明网站 http://www.robotstxt.org/ robots.txt原则 Robots协议是国际互联网界通行 ...

  9. eclipse颜色配置

    Eclipse颜色主题插件:Eclipse Color Theme http://blog.sina.com.cn/s/blog_674212810101go8x.html 一个很赞的eclipse插 ...

  10. linux xxd 命令

    http://www.cnblogs.com/openix/archive/2012/04/23/2466320.html xxd -i dht.jpg dht.h