步骤1.新建java项目:JPAOneToMany,将hibernate包以及mysql驱动包导入
步骤2.在类路径下新建xml文件persistence.xml,将其放入META-INF文件夹下,其代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
version="1.0">
<persistence-unit name="itcast" transaction-type="RESOURCE_LOCAL">
<properties>
<property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/itcast?useUnicode=true&characterEncoding=UTF-8" />
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect"/>
<property name="hibernate.connection.driver_class" value="org.gjt.mm.mysql.Driver" />
<property name="hibernate.connection.username" value="root" />
<property name="hibernate.connection.password" value="root" />
<property name="hibernate.max_fetch_depth" value="3" />
<property name="hibernate.hbm2ddl.auto" value="update" />
</properties>
</persistence-unit>
</persistence>
步骤3.编写实体Bean类
Order代码如下:
package cn.itcast.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.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;
@Entity
@Table(name="Orders")
public class Order {
private String orderid;
private Float amout = 0f;
private Set<OrderItems> items = new HashSet<OrderItems>();
/*
* @OneToMany(cascade=CascadeType.ALL,fetch=FetchType.LAZY,mappedBy="order")
*分别标注了关系为一对多,级联操作包括级联更新,级联查询
*加载方式默认为延迟加载:当@ManyToOne关系后为One默认为立即加载,关系后为Many,默认为延迟加载
*mappedBy="order" 指明order来维护这个关系
*
*/
@OneToMany(cascade=CascadeType.ALL,fetch=FetchType.LAZY,mappedBy="order")
public Set<OrderItems> getItems() {
return items;
}
public void setItems(Set<OrderItems> items) {
this.items = items;
}
@Column(nullable=false)
public Float getAmout() {
return amout;
}
public void setAmout(Float amout) {
this.amout = amout;
}
@Id @Column(length=12)
public String getOrderid() {
return orderid;
}
public void setOrderid(String orderid) {
this.orderid = orderid;
}
public void addOrderItems(OrderItems orderItems){
orderItems.setOrder(this);
this.items.add(orderItems);
}
}
OrderItems代码如下:
package cn.itcast.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 OrderItems {
private Integer id;
private String productName;
private Float sellPrice = 0f;
private Order order;
/*
* @ManyToOne(cascade={CascadeType.REFRESH,CascadeType.MERGE},optional=false)
*分别标注了关系为多对一,级联操作包括级联更新,级联查询
*加载方式默认为立即加载:当@ManyToOne关系后为One默认为立即加载,关系后为Many,默认为延迟加载
*该属性标注为必须属性
* @JoinColumn(name="order_id")
*外键值为order_id
*/
@ManyToOne(cascade={CascadeType.REFRESH,CascadeType.MERGE},optional=false)
@JoinColumn(name="order_id")
public Order getOrder() {
return order;
}
public void setOrder(Order order) {
this.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;
}
}
步骤4.创建junit测试
package junit.test;
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.OrderItems;
public class OneToManyTest {
@BeforeClass
public static void setUpBeforeClass() throws Exception {
}
@Test public void save(){
EntityManagerFactory factory = Persistence.createEntityManagerFactory("itcast");
EntityManager em = factory.createEntityManager();
em.getTransaction().begin();
Order order = new Order();
order.setOrderid("988");
order.setAmout(70f);
OrderItems items1 = new OrderItems();
items1.setProductName("足球");
items1.setSellPrice(30f);
OrderItems items2 = new OrderItems();
items2.setProductName("蓝球");
items2.setSellPrice(40f);
/* items1.setOrder(order);
items2.setOrder(order);
order.getItems().add(items1);
order.getItems().add(items2);*/
order.addOrderItems(items1);
order.addOrderItems(items2);
em.persist(order);
em.getTransaction().commit();
em.close();
factory.close();
}
}
看能将表创建出来,并插入数据即可。
分享到:
相关推荐
JPA学习笔记-EJB-04JPA关联映射总结 JPA JPA关联映射JPA学习笔记-EJB-04JPA关联映射总结 JPA JPA关联映射
赠送jar包:hibernate-jpa-2.1-api-1.0.2.Final.jar; 赠送原API文档:hibernate-jpa-2.1-api-1.0.2.Final-javadoc.jar; 赠送源代码:hibernate-jpa-2.1-api-1.0.2.Final-sources.jar; 赠送Maven依赖信息文件:...
赠送jar包:hibernate-jpa-2.1-api-1.0.2.Final.jar; 赠送原API文档:hibernate-jpa-2.1-api-1.0.2.Final-javadoc.jar; 赠送源代码:hibernate-jpa-2.1-api-1.0.2.Final-sources.jar; 赠送Maven依赖信息文件:...
jpa--11.双向一多jpa--11.双向一多jpa--11.双向一多jpa--11.双向一多jpa--11.双向一多jpa--11.双向一多jpa--11.双向一多jpa--11.双向一多
jpa--12.双向一一jpa--12.双向一一jpa--12.双向一一jpa--12.双向一一jpa--12.双向一一jpa--12.双向一一
hibernate-jpa-2.1-api-1.0.0.final-sources.jar 源码 hibernate-jpa-2.1-api-1.0.0.final-sources.jar 源码
hibernate-jpa-2.1-api-1.0.0.final.jar.zip,内含hibernate-jpa-2.1-api-1.0.0.final.jar
hibernate-jpa-2.0-api-1.0.1.Final.jar
NULL 博文链接:https://lc2586.iteye.com/blog/721279
hibernate-jpa-2.1-api-1.0.0.Final.jar官方下载,请放心使用
jpa--13双向多多jpa--13双向多多jpa--13双向多多jpa--13双向多多jpa--13双向多多jpa--13双向多多jpa--13双向多多jpa--13双向多多
hibernate-jpa-2.0-api-1.0.1.Final-sources.jar hibernate jpa 源代码
NULL 博文链接:https://lc2586.iteye.com/blog/722671
java.lang.NoClassDefFoundError: javax/persistence/spi/ProviderUtil 或javax/persistence/entitylistener问题
NULL 博文链接:https://ylq365.iteye.com/blog/1664599
实用JPA开发指南实用JPA开发指南实用JPA开发指南实用JPA开发指南实用JPA开发指南实用JPA开发指南实用JPA开发指南实用JPA开发指南
java运行依赖jar包
hibernate-jpa-2.0-api-1.0.1.Final-sources