@OneToMany或@ManyToOne的用法-annotation关系映射篇(上)
来源:互联网 发布:实况泽罗伯托巅峰数据 编辑:程序博客网 时间:2024/06/08 07:30
例如我们用一个例子来开启JPA的一对多和多对一的学习。
比如你去当当网上买书籍,当当网就给你一个订单。
通过上面的业务活动描述你可以分析得出:一个订单可以包含一个或多个订单项.那么我们将将订单和订单项设计关系为(1:N)一对多的关系(排除0)。 得出关系我们就使用JPA来实现这个关系(关于建立JPA和基本的配置我就不再说了,如果不明白请看JPA入门篇)。
首先建立订单实体类
订单项的实体类
下面看看测试类
首先建立订单实体类
Java代码
- import
java.util.HashSet; - import
java.util.Set; -
- import
javax.persistence.CascadeType; - import
javax.persistence.Column; - import
javax.persistence.Entity; - import
javax.persistence.Id; - import
javax.persistence.OneToMany; - import
javax.persistence.Table; -
- @Entity
- @Table(name="orders")
- public
class Order { -
-
String orderid; -
Float amount = 0f; -
Set<OrderItem> newitems = HashSet<OrderItem>(); -
-
-
= 12) -
String getOrderid() { -
orderid; -
} -
-
void setOrderid(String orderid) { -
= orderid; -
} -
-
= false) -
Float getAmount() { -
amount; -
} -
-
void setAmount(Float amount) { -
= amount; -
} -
-
= "order"){ CascadeType.REFRESH, CascadeType.PERSIST,CascadeType.MERGE, CascadeType.REMOVE },mappedBy = //这里配置关系,并且确定关系维护端和被维护端。mappBy表示关系被维护端,只有关系端有权去更新外键。这里还有注意OneToMany默认的加载方式是赖加载。当看到设置关系中最后一个单词是Many,那么该加载默认为懒加载 -
Set<OrderItem> getItems() { -
items; -
} -
-
void setItems(Set<OrderItem> items) { -
= items; -
} -
-
/** -
*该方法用于向order中加order项 -
/* -
void addOrderItem(OrderItem orderItem){ -
orderItem.setOrder( -
-
} -
- }
订单项的实体类
Java代码
- 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 { -
Integer id; -
String productName; -
Float sellPrice = 0f; -
Order order; -
-
-
-
Integer getId() { -
id; -
} -
-
void setId(Integer id) { -
= id; -
} -
-
= 40,nullable false)= -
String getProductName() { -
productName; -
} -
-
void setProductName(String productName) { -
= productName; -
} -
-
= false) -
Float getSellPrice() { -
sellPrice; -
} -
-
void setSellPrice(Float sellPrice) { -
= sellPrice; -
} -
-
= true){CascadeType.MERGE,CascadeType.REFRESH }, optional = -
-
Order getOrder() { -
order; -
} -
-
void setOrder(Order order) { -
= order; -
} -
- }
下面看看测试类
Java代码
- import
javax.persistence.EntityManager; - import
javax.persistence.EntityManagerFactory; - import
javax.persistence.Persistence; -
- import
org.junit.BeforeClass; - import
org.junit.Test; -
- import
cn.itcast.bean.Order; - import
cn.itcast.bean.OrderItem; -
- public
class OneToManyTest { -
-
-
static void setUpBeforeClass() throwsException { -
} -
public void addOrder(){ -
EntityManagerFactory factory = Persistence.createEntityManagerFacto ry( -
EntityManager em = factory.createEntityManager(); -
em.getTransaction().begin(); start transaction -
-
Order order = Order(); -
order.setAmount(34f); -
order.setOrderid( -
-
-
OrderItem orderItem1 = OrderItem(); -
orderItem1.setProductName( -
orderItem1.setSellPrice(22f); -
order.addOrderItem(orderItem1); orderitem in order -
-
OrderItem orderItem2 = OrderItem(); -
orderItem2.setProductName( -
orderItem2.setSellPrice(100f); -
order.addOrderItem(orderItem2); -
-
em.persist(order); order object -
em.getTransaction().commit(); transaction -
em.close(); -
factory.close(); -
} - }
2 0
- @OneToMany或@ManyToOne的用法-annotation关系映射篇(上)
- @OneToMany或@ManyToOne的用法-annotation关系映射篇(上)
- @OneToMany或@ManyToOne的用法-annotation关系映射篇(上)
- @OneToMany或@ManyToOne的用法-annotation关系映射篇(上)
- @OneToMany或@ManyToOne的用法-annotation关系映射篇(上)
- @OneToMany或@ManyToOne的用法-annotation关系映射篇
- 自己总结一下关联关系映射中的OneToMany,ManyToOne,单向,双向注意的事项!ps:例子
- 11hibernate hibernate的关系映射之OneToMany和ManyToOne(重点)
- 双向一对多(多对一)@OneToMany或@ManyToOne的用法
- @OneToMany,ManyToOne双向关系(@OneToMany和@ManyToOne都得写的)
- @ManyToOne和@OneToMany的用法的自我小结
- Hibernate关系映射(五)一对多、多对一双向关联@OneToMany @OneToMany Annotation方式
- @ManyToOne @OneToMany
- Hibernate关系映射(三)多对一单向关联@ManyToOne Annotation方式
- @ManyToOne 和@oneToMany中@@JoinColumn的区别
- Play框架的@OneToMany、@ManyToOne级联操作
- Hibernate关系映射(四)一对多单向关联@OneToMany Annotation方式
- Hibernate08_映射关系---OneToMany单向
- 一个简单的能够进行选择性购买商品的程序流程,及注意事项
- Openfire 的安装和配置
- 一切成功源于积累——20140330 总结自己这段时间信息获取的来源
- 深入理解Java内存模型(一)——基础
- 邵医处方集,您的忠实参考伙伴~
- @OneToMany或@ManyToOne的用法-annotation关系映射篇(上)
- 我看Openstack的临时(Ephemeral)存储和块(Block)存储
- 【2014.03.30】实习开始了
- java IO一般用到的类
- AS3.0中的ApplicationDomain
- @ManyToMany- annotation关系映射篇(下)
- 一位数据分析师的职业规划
- jstl学习笔记
- 基础加强-代理