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
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
|
packagecom.sinoi.bean;importjava.util.HashSet;importjava.util.Set;importjavax.persistence.CascadeType;importjavax.persistence.Column;importjavax.persistence.Entity;importjavax.persistence.FetchType;importjavax.persistence.GeneratedValue;importjavax.persistence.Id;importjavax.persistence.OneToMany;importjavax.persistence.Table;@Entity@Table(name="my_order")publicclassOrder { @Id@Column(length=12) privateString orderId; @Column(nullable=false) privateFloat amount = 0f; @OneToMany(cascade={CascadeType.REMOVE, mappedBy="order") privateSet<OrderItem> orderItems =new publicString getOrderId() { returnorderId; } publicvoidsetOrderId(String orderId) { this.orderId } publicFloat getAmount() { returnamount; } publicvoidsetAmount(Float amount) { this.amount } publicSet<OrderItem> getOrderItems() { returnorderItems; } publicvoidsetOrderItems(Set<OrderItem> orderItems) { this.orderItems } publicvoidaddOrderItem(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
|
packagecom.sinoi.bean;importjavax.persistence.CascadeType;importjavax.persistence.Column;importjavax.persistence.Entity;importjavax.persistence.GeneratedValue;importjavax.persistence.Id;importjavax.persistence.JoinColumn;importjavax.persistence.ManyToOne;@EntitypublicclassOrderItem { @Id@GeneratedValue privateInteger id; @Column(length=20,false) privateString productName; @Column(nullable=false) privateFloat sellPrice; @ManyToOne(cascade={CascadeType.REFRESH,false) @JoinColumn(name="item_order_for") privateOrder order; publicOrder getOrder() { returnorder; } publicvoidsetOrder(Order order) { this.order } publicInteger getId() { returnid; } publicvoidsetId(Integer id) { this.id } publicString getProductName() { returnproductName; } publicvoidsetProductName(String productName) { this.productName } publicFloat getSellPrice() { returnsellPrice; } publicvoidsetSellPrice(Float sellPrice) { this.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
|
packagejunit.test;importjavax.persistence.EntityManager;importjavax.persistence.EntityManagerFactory;importjavax.persistence.Persistence;importorg.junit.Test;importcom.sinoi.bean.Order;importcom.sinoi.bean.OrderItem;publicclassUnitTest { @Test publicvoidsave() { EntityManagerFactory entityManagerFactory .createEntityManagerFactory("unitname"); EntityManager entityManager = entityManagerFactory .createEntityManager(); entityManager.getTransaction().begin(); Order order =new order.setOrderId("jfdkf323"); order.setAmount(232f); OrderItem orderItem =new orderItem.setProductName("basketball"); orderItem.setSellPrice(221f); OrderItem orderItem2 =new 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(三)之实体关系一对多(多对一)的更多相关文章
- PD的CDM模型中的三种实体关系
PD的CDM模型中的三种实体关系 本文摘自:http://www.cnblogs.com/syf/articles/2480580.html PD 正向工程使用说明:http://download.c ...
- 2018.11.4 Hibernate中一对、多对多的关系
简单总结一下 多表关系 一对多/多对一 O 对象 一的一方使用集合. 多的一方直接引用一的一方. R 关系型数据库 多的一方使用外键引用一的一方主键. M 映射文件 一: 多: 操作: 操作管理级别属 ...
- JPA实体关系映射:@ManyToMany多对多关系、@OneToMany@ManyToOne一对多多对一关系和@OneToOne的深度实例解析
JPA实体关系映射:@ManyToMany多对多关系.@OneToMany@ManyToOne一对多多对一关系和@OneToOne的深度实例解析 今天程序中遇到的错误一 org.hibernate.A ...
- JPA总结——实体关系映射(一对多@OneToMany)
JPA总结——实体关系映射(一对多@OneToMany) 注意:本文出自“阿飞”的博客,如果要转载本文章,请与作者联系! 并注明来源: http://blog.sina.com.cn/s/blog_4 ...
- Hibernate学习笔记三:对象关系映射(一对一,一对多,多对一,多对多)
如需转载,请说明出处:http://www.cnblogs.com/gudu1/p/6895610.html Hibernate通过关系映射来表示数据库中表与表之间的关系,关系映射可以通过两种方式:配 ...
- Hibernate之jpa实体映射的三种继承关系
在JPA中,实体继承关系的映射策略共有三种:单表继承策略(table per class).Joined策略(table per subclass)和Table_PER_Class策略. 1.单表继承 ...
- JPA 一对一 一对多 多对一 多对多配置
1 JPA概述 1.1 JPA是什么 JPA (Java Persistence API) Java持久化API.是一套Sun公司 Java官方制定的ORM 方案,是规范,是标准 ,sun公司自己并没 ...
- Nhibernate 映射关系,一对多 多对一与多对手在映射文件中的体现。
今天做了第一个Nhibernate项目,摸着石头过河,学到了一些东西,在这里将自己总结体会到的一些映射关系写出来,与大家分享,由于是初学者,如果有不对的地方希望大家能够指出来. 首先要说明要建立的几张 ...
- JPA级联(一对一 一对多 多对多)注解【实际项目中摘取的】并非自己实际应用
下面把项目中的用户类中有个:一对一 一对多 多对多的注解对应关系列取出来用于学习 说明:项目运行正常 问题类:一对多.一对一.多对多 ============一对多 一方的设置 @One ...
随机推荐
- (ubuntu)linux C编程之sleep()和usleep()的使用和区别
### 函数名: sleep 头文件: #include <windows.h> // 在VC中使用带上头文件 #include <unistd.h> // 在gcc编译器中, ...
- js数组求差集
var arr1 = [2,3,5,88,99,444,66];var arr2 = [2,88,66]; arr_dive(arr1,arr2); function arr_dive(aArr,bA ...
- 在confluence中出现Handshake failed due to invalid Upgrade header: null
在confluence中出现Handshake failed due to invalid Upgrade header: null 昨天晚上同事说confluence写完日志保存不了,然后我登陆co ...
- IOS和OSX事件传递机制
本文ios部分转载自: http://zhoon.github.io/ios/2015/04/12/ios-event.html iOS的事件有好几种:Touch Events(触摸事件).Motio ...
- jquery常用函数
.text() //获得或更改元素文本: .html() //获得或更改元素标签: .val() //获得或更改input值: .css() //获得或更改元素样式: .click() //点击触发事 ...
- 检测linux vps是xen openvz还是kvm的方法
很多时候不知道自己买的vps是那种虚拟化技术,怕给商家忽悠了,下面给大家介绍下怎么简单的判断自己vps的虚拟化技术. 1.通过系统上的相关目录或文件判断 ll /proc/ ps: /proc目录 ...
- hiredis的各种windows版本
hiredis的各种windows版本(金庆的专栏 2016.12)hiredis 是内存数据库 redis 的客户端C库, 不支持Windows.hiredis的Windows移植版本有许多:des ...
- [多线程] 生产者消费者模型的BOOST实现
说明 如果 使用过程中有BUG 一定要告诉我:在下面留言或者给我邮件(sawpara at 126 dot com) 使用boost::thread库来实现生产者消费者模型中的缓冲区! 仓库内最多可以 ...
- 自定义Java注解的方式与应用
注解的作用 Annotation(注解)是JDK 5.0引入的特性,它的基本作用就是修饰编程元素. 注解相当于一种标记,在程序中加了注解就等于为程序打上了某种标记.编译器.开发工具或其他程序可以用反射 ...
- Spring基础配置
从毕业到现在我一直从事Android开发,但是对JavaEE一直念念不忘,毕业校招的时候,一个礼拜拿了三个offer,岗位分别是Android.JavaEE和JavaSE,后来觉得Android比较简 ...