Jpa的多对一

因为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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值