因为jpa是基于Hibernate框架的,所以它可以自己在数据库创建表
但是他的所有的注释写在model类的get的方法上
第一步:创建两个model分别为order和customer
创建model名为order
package org.peter.model;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
/**
* Created by Lenovo on 2017/7/27.
*/
@Entity(name = "customer")
public class Customer {
private Long id;
private String cname;
private String address;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getCname() {
return cname;
}
public void setCname(String cname) {
this.cname = cname;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
创建model名为customer
package org.peter.model;
import javax.persistence.*;
/**
* Created by Lenovo on 2017/7/27.
*/
@Entity(name = "t_order")
public class Order {
private Long id;
private String pname;
private Customer customer;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getPname() {
return pname;
}
public void setPname(String pname) {
this.pname = pname;
}
@JoinColumn(name = "customer_id")//设置外键
@ManyToOne//设置多对一
public Customer getCustomer() {
return customer;
}
public void setCustomer(Customer customer) {
this.customer = customer;
}
}
第二步:创建一个main的类来做测试
package org.peter;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.peter.model.Customer;
import org.peter.model.Order;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.EntityTransaction;
import javax.persistence.Persistence;
/**
* Created by Lenovo on 2017/7/27.
*/
public class main {
EntityManagerFactory factory;
EntityManager manager;
EntityTransaction tx;
@Before
public void before(){
//1,创建EntityManagerFactory
factory = Persistence.createEntityManagerFactory("NewPersistenceUnit");
//2,创建ManagerFactory
manager = factory.createEntityManager();
//3,开启事物
tx = manager.getTransaction();
tx.begin();
}
@After
public void after(){
//5,提交事物
tx.commit();
//6,关闭资源
manager.close();
factory.close();
}
@Test
public void add(){
Order o1 = new Order();
o1.setPname("蓝狐");
Order o2 = new Order();
o2.setPname("黄瓜");
Order o3 = new Order();
o3.setPname("吃饭");
Customer customer = new Customer();
customer.setAddress("深圳");
customer.setCname("张艺三");
o1.setCustomer(customer);
o2.setCustomer(customer);
o3.setCustomer(customer);
manager.persist(customer);
manager.persist(o1);
manager.persist(o2);
manager.persist(o3);
}
}
这样就完成了jpa的多对一。
注意:在提交的时候首先一定要提交一个添加操作的,这样可以减少sql语句的生成
资源代码:http://download.csdn.net/download/strive_peter/9913191