zoukankan      html  css  js  c++  java
  • jpa复合主键的使用

    AirLinePk复合主键类

    package com.ljq.entity;

    import javax.persistence.Column;
    import javax.persistence.Embeddable;

    /**
    * 使用复合主键要满足的条件
    *
    * 1、要实现序列化 2、提供默认的构造方法 3、实现hashCope
    *
    *
    @author Administrator
    *
    */

    @SuppressWarnings(
    "serial")
    @Embeddable
    //embeddable: 可嵌入的
    public class AirLinePk implements java.io.Serializable {
    @Column(length
    = 3)
    private String startCity;// 出发城市

    @Column(length
    = 3)
    private String endCity;// 抵达城市

    public AirLinePk() {
    super();
    }

    public AirLinePk(String startCity, String endCity) {
    super();
    this.startCity = startCity;
    this.endCity = endCity;
    }

    public String getEndCity() {
    return endCity;
    }

    public void setEndCity(String endCity) {
    this.endCity = endCity;
    }

    public String getStartCity() {
    return startCity;
    }

    public void setStartCity(String startCity) {
    this.startCity = startCity;
    }

    @Override
    public int hashCode() {
    final int PRIME = 31;
    int result = 1;
    result
    = PRIME * result + ((endCity == null) ? 0 : endCity.hashCode());
    result
    = PRIME * result
    + ((startCity == null) ? 0 : startCity.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;
    final AirLinePk other = (AirLinePk) obj;
    if (endCity == null) {
    if (other.endCity != null)
    return false;
    }
    else if (!endCity.equals(other.endCity))
    return false;
    if (startCity == null) {
    if (other.startCity != null)
    return false;
    }
    else if (!startCity.equals(other.startCity))
    return false;
    return true;
    }

    }

    AirLine实体类

    package com.ljq.entity;


    import javax.persistence.Column;
    import javax.persistence.EmbeddedId;
    import javax.persistence.Entity;

    @SuppressWarnings(
    "serial")
    @Entity
    public class AirLine implements java.io.Serializable{
    @EmbeddedId
    private AirLinePk id;

    @Column(length
    =20)
    private String name;

    public AirLine() {
    super();
    }

    public AirLine(String startCity,String endCity, String name) {
    this.id =new AirLinePk(startCity,endCity);
    this.name = name;
    }


    public AirLinePk getId() {
    return id;
    }

    public void setId(AirLinePk id) {
    this.id = id;
    }

    public String getName() {
    return name;
    }

    public void setName(String name) {
    this.name = name;
    }




    }

    PKTest测试类

    package com.ljq.test;

    import java.util.List;

    import javax.persistence.EntityManager;
    import javax.persistence.EntityManagerFactory;
    import javax.persistence.Persistence;

    import org.junit.Test;

    import com.ljq.entity.AirLine;
    import com.ljq.entity.AirLinePk;

    public class PKTest {

    @Test
    public void save() {
    EntityManagerFactory factory
    = Persistence.createEntityManagerFactory("ljq");
    EntityManager em
    =factory.createEntityManager();
    em.getTransaction().begin();

    em.persist(
    new AirLine("PEK","SHA","北京飞上海"));


    em.getTransaction().commit();
    em.close();
    factory.close();

    }

    @Test
    public void find() {
    EntityManagerFactory factory
    = Persistence.createEntityManagerFactory("ljq");
    EntityManager em
    =factory.createEntityManager();
    em.getTransaction().begin();

    AirLine airLine
    =em.find(AirLine.class, new AirLinePk("PEK","SHA"));
    System.out.println(airLine.getName());


    em.getTransaction().commit();
    em.close();
    factory.close();

    }

    @Test
    public void update() {
    EntityManagerFactory factory
    = Persistence.createEntityManagerFactory("ljq");
    EntityManager em
    =factory.createEntityManager();
    em.getTransaction().begin();

    AirLine airLine
    =em.getReference(AirLine.class, new AirLinePk("PEK","SHA"));
    airLine.setName(
    "北京飞上海北京飞上海");
    em.merge(airLine);


    em.getTransaction().commit();
    em.close();
    factory.close();

    }

    @SuppressWarnings({
    "unused", "unchecked" })
    @Test
    public void list() {
    EntityManagerFactory factory
    = Persistence.createEntityManagerFactory("ljq");
    EntityManager em
    =factory.createEntityManager();
    em.getTransaction().begin();


    List
    <AirLine> airLines=em.createQuery("select o from AirLine o").getResultList();
    for(AirLine air:airLines){
    System.out.println(air.getName());
    }

    em.getTransaction().commit();
    em.close();
    factory.close();

    }

    @SuppressWarnings({
    "unused", "unchecked" })
    @Test
    public void detele() {
    EntityManagerFactory factory
    = Persistence.createEntityManagerFactory("ljq");
    EntityManager em
    =factory.createEntityManager();
    em.getTransaction().begin();


    em.remove(em.getReference(AirLine.
    class, new AirLinePk("PEK","SHA")));

    em.getTransaction().commit();
    em.close();
    factory.close();

    }

    /**
    * 用来判断映射是否成功
    *
    */
    @Test
    public void test() {
    Persistence.createEntityManagerFactory(
    "ljq");
    }

    }
  • 相关阅读:
    elasticsearch 中的Multi Match Query
    activiti 流程部署的各种方式
    elasticsearch 嵌套对象之嵌套类型
    elasticsearch Java High Level REST 相关操作封装
    elasticsearch 字段数据类型
    ubuntu 安装 docker
    elasticsearch 通过HTTP RESTful API 操作数据
    facenet 人脸识别(二)——创建人脸库搭建人脸识别系统
    POJ 3093 Margaritas(Kind of wine) on the River Walk (背包方案统计)
    墨卡托投影, GPS 坐标转像素, GPS 坐标转距离
  • 原文地址:https://www.cnblogs.com/linjiqin/p/1978680.html
Copyright © 2011-2022 走看看