- 浏览: 394732 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (325)
- 数据中台 (15)
- 设计模式 (7)
- 数据结构 (4)
- JavaScript (51)
- 网页设计与制作 (7)
- Flex (4)
- Fckeditor (7)
- Struts (12)
- Spring (19)
- Hibernate (14)
- EJB3.0 (19)
- Java EE 6 (2)
- JSP (22)
- 辅助框架 (9)
- WebService (1)
- XML (8)
- 正则表达式 (5)
- 并发(多线程) (2)
- Java网络 (10)
- 开发工具 (25)
- Oracle (15)
- MySQL (8)
- Git (4)
- SQL Server (2)
- C# (9)
- php (14)
- asp (2)
- ColdFusion (5)
- Tex (1)
- 云游戏 (1)
最新评论
-
CSDNBenbenChong:
...
SQL里desc和asc是什么意思 -
雪狐一号:
非常好 顶一个
SQL里desc和asc是什么意思 -
boyleichinasoft:
thinking...
该如何去使用设计模式呢? -
nforce_com:
写的很好,学习了!不过Student 一般情况下不会删除所有 ...
JPA多对多 -
TaoistWar:
那是FCKEditor的,详细信息只能查看官方文档,或者直接看 ...
1.fckeditor-java-2.5给上传图片添加水印
1-m:多的一方为关系维护端,关系维护端负责外键纪录的更新,关系被维护端没有权力更新外键纪录.
维护端注解
@OneToMany(cascade = { CascadeType.PERSIST, CascadeType.REFRESH, CascadeType.MERGE, CascadeType.REMOVE }, fetch = FetchType.EAGER, mappedBy = "order")
被维护端注解
@ManyToOne(cascade = { CascadeType.MERGE, CascadeType.REFRESH }, optional = false) @JoinColumn(name = "order_id")
对于一对多和多对一关系的现实中的例子是,网上购物时的订单和订单项。一个订单有多个订单项。多个订单项属于一个订单。
订单实体类:
package com.taoistwar.jpa.entity.onetomany; import java.util.HashSet; import java.util.Set; import javax.persistence.CascadeType; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.OneToMany; import javax.persistence.Table; @Entity @Table(name = "order_info") public class OrderInfo { private Integer id; private String name; private Set<OrderItem> items = new HashSet<OrderItem>(); @Id @GeneratedValue(strategy = GenerationType.AUTO) public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } @OneToMany(cascade = { CascadeType.PERSIST, CascadeType.REFRESH, CascadeType.MERGE, CascadeType.REMOVE }, fetch = FetchType.EAGER, 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); } }
重点在于:
@OneToMany(cascade = { CascadeType.PERSIST, CascadeType.REFRESH, CascadeType.MERGE, CascadeType.REMOVE }, fetch = FetchType.EAGER, mappedBy = "order") public Set<OrderItem> getItems() { return items; }
订单项实体类:
package com.taoistwar.jpa.entity.onetomany; import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.Table; @Entity @Table(name = "order_item") public class OrderItem { private Integer Id; private String name; private OrderInfo order; @Id @GeneratedValue(strategy = GenerationType.AUTO) public Integer getId() { return Id; } public void setId(Integer id) { Id = id; } @Column(length = 20, nullable = true) public String getName() { return name; } public void setName(String name) { this.name = name; } @ManyToOne(cascade = { CascadeType.MERGE, CascadeType.REFRESH }, optional = false) @JoinColumn(name = "order_id") public OrderInfo getOrder() { return order; } public void setOrder(OrderInfo order) { this.order = order; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((Id == null) ? 0 : Id.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; OrderItem other = (OrderItem) obj; if (Id == null) { if (other.Id != null) return false; } else if (!Id.equals(other.Id)) return false; return true; } }
重点在于:
@ManyToOne(cascade = { CascadeType.MERGE, CascadeType.REFRESH }, optional = false) @JoinColumn(name = "order_id") public OrderInfo getOrder() { return order; }
测试类:
package com.taoistwar.jpa.entity.onetomany; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.Persistence; import org.junit.Test; public class OneToMany { @Test public void save() { EntityManagerFactory emf = Persistence .createEntityManagerFactory("JPAPU"); EntityManager em = emf.createEntityManager(); em.getTransaction().begin(); OrderInfo o = new OrderInfo(); o.setName("订单一"); OrderItem oi1 = new OrderItem(); oi1.setName("产品一"); o.addOrderItem(oi1); OrderItem oi2 = new OrderItem(); oi2.setName("产品一"); o.addOrderItem(oi2); OrderItem oi3 = new OrderItem(); oi3.setName("产品一"); o.addOrderItem(oi3); OrderItem oi4 = new OrderItem(); oi4.setName("产品一"); o.addOrderItem(oi4); em.persist(o); // UUID.randomUUID().toString(); em.getTransaction().commit(); emf.close(); } }
- JPA.zip (5.7 MB)
- 下载次数: 543
发表评论
-
8.EJB3的拦截器(外部类)
2010-05-11 11:00 1049EJB3的拦截器的开步骤: 1.开发拦截器 使用@A ... -
Caused by: org.hibernate.HibernateException: unknown Oracle major version [0]
2010-02-24 09:34 1757昨天试了一下把mysql的数据源配置mysql-ds.xml放 ... -
detached entity passed to persist
2010-02-02 08:01 1694detached entity passed to persi ... -
实体的状态
2009-06-17 23:04 579新建状态:新建的实体对象,尚未拥有持久化主键,没有和一个持久化 ... -
EJB3的一些常见注解
2009-06-17 22:58 8990.实体管理器 @Persisten ... -
JPA双向一对多和多对一
2009-06-16 01:03 4666JPA中一对多和多对一双向关系中,多的一方为关系维护端 ... -
JPA多对多
2009-05-16 10:38 8452维护端注解 @ManyToMany (cascade ... -
JPA(HIberante)环境的搭建
2009-04-19 14:18 18581.添加jar包 hibernate & jpa j ... -
6.2 配置JBoss数据源(Oracle10G)
2009-03-17 10:38 15821.配置数据源 <?xml version=" ... -
6.1 配置JBoss数据源(MS SQL Server2005)
2009-03-17 09:35 17181.SQL Server 2005 配置内容: <?xm ... -
8.开发消息驱动Bean
2009-03-13 22:59 10131.配置消息服务 <?xml version=&qu ... -
7.单表实体Bean
2009-03-09 23:47 997(1):建表SQL语句(MySQL) ... -
6.配置JBoss数据源
2009-03-09 18:57 2357以MySQL为例: (1):添 ... -
5.开发有状态Bean
2009-03-05 23:37 8061.无状态Bean使用实例池技术管理Bean.性能 ... -
4.开发本地接口的无状态会话Bean
2009-03-05 23:03 779远程接口需要 ... -
3.通过ANT来提高应用的开发效率
2009-03-05 22:21 596<?xml version="1.0" ... -
2.开发EJB的客户端
2009-03-05 20:49 879EJB是业务层,通常被客户端调用,客户端可以是J ... -
1.EJB的HelloWorld!
2009-03-05 20:32 1700用Eclipse开发EJB需要用到EJB的类库 ...
相关推荐
JPA一对一,一对多,多对多关系映射,面向对象领域
11_JPA详解_JPA中的一对多延迟加载与关系维护.zip 11_JPA详解_JPA中的一对多延迟加载与关系维护.zip
11_传智播客JPA详解_JPA中的一对多延迟加载与关系维护.rar
这是本人观看传智的视频,整理出来的完整的源码,及学习步骤,学了总会忘记,方便今后复习。代码可以直接运行,jar包完整,资源较大,分几块分享(1-5,按照学习步骤写的)。
JPA常用关系实现例子:一对一,一对多,多对一,多对多关系实现代码。
为了方便广大开发朋友的需要特整理一下有关jpa映射关系,希望可以帮助到一些朋友。
JPA视频_映射单向一对多的关联关系 · 14. JPA视频_映射双向一对多的关联关系 · 15. JPA视频_映射双向一对一的关联关系 · 16. JPA视频_映射双向多对多的关联关系 · 17. JPA视频_二级缓存 · 18. JPA视频_...
NULL 博文链接:https://prowl.iteye.com/blog/519618
映射单向多对一、单向一对多、双向一对一、双向多对一和双向多对多关联关系的具体实现
单向一对一 双向一对一 单向一对多 双向一对多 双向多对一 单向多对多 双向多对多
最近比较清闲,终于有空好好把传智的jpa视频整理了一些,因为每次复习都看视频比较麻烦,索性自己整理一份文档,方便查看。 针对jpa入门级概念做了解释; 有一些基本的增删改查例子,及...重点学习一对多,多对多关系;
hibernate的中关系映射分为一对一、一对多、多对一、多对多,其中有单双向之分。而一对一还有主键和外键区分。一共是九种。分别用xml配置文件和annotation实现。annotation的版本没有写测试程序,见谅。
除了对 JPA 标准的支持之外,OpenJPA 还提供了非常多的特性和工具支持让企业应用开发变得更加简单,减少开发者的工作量,包括允许数据远程传输/离线处理、数据库/对象视图统一工具、使用缓存(Cache)提升企业应用...
Spring Boot,Maven和MySQL的JPA一对多关系示例 指南 先决条件 JDK 1.8或更高版本 Maven 3或更高版本 MySQL 5.6或更高版本 叠放 Spring Data JPA Sprint Boot MySQL 跑 mvn spring-boot:run
现在引入了一组全新的 API:Java Persistence API JPA 以允许开发者管理 Java EE(甚至 SE)应用程序中的关系数据 另外 Sun 声称 Java Persistence API 表现了一些 Hibernate TopLink(二者都会在稍后讨论) JDO ...
29.1主键生成策略 29.2 复合主键 29.3嵌入式主键 ...29.5 多对一和一对多关系的配置和使用 29.6 多对多的关系 29.7 把查询的多个值封装成对象 29.8 批量更新和删除 29.9 使用存储过程 29.10 实体生命周期回调方法
下表关系图说明了此解决方案中设计的数据库: 一对多关系是指两个实体/表A和B之间的关系,其中A的一个元素/行可以与B的许多元素链接,但是B的成员仅与A的一个元素链接。 在此示例中,book_category和book表具有一对...
Spring data jpa 多表联查 一对多的关系和操作多表的操作步骤 客户:一家公司 联系人:这家公司的员工
该案例采用目前最流行、最规范的java ee架构,整个应用分为jpa实体层、eao层、业务逻辑层、mvc层和视图层,各层之间分层清晰,层与层之间以松耦合的方法组织在一起。该案例既提供了ide无关的、基于ant管理的项目源码...