日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

JPA 系列教程11-复合主键-2个@Id

發布時間:2023/12/13 综合教程 29 生活家
生活随笔 收集整理的這篇文章主要介紹了 JPA 系列教程11-复合主键-2个@Id 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

復合主鍵

指多個主鍵聯合形成一個主鍵組合

需求產生

比如航線一般是由出發地及目的地確定,如果要確定唯一的航線就可以用出發地和目的地一起來表示

ddl語句

CREATE TABLE `t_airline` (
  `startCity` varchar(3) NOT NULL,
  `endCity` varchar(3) NOT NULL,
  `name` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`startCity`,`endCity`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Airline

package com.jege.jpa.composite;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

/**
 * @author JE哥
 * @email 1272434821@qq.com
 * @description:復合主鍵-2個@Id
 */
@Entity
@Table(name = "t_airline")
public class Airline implements Serializable {
  private static final long serialVersionUID = -906357110051689484L;
  @Id
  @Column(length = 3)
  private String startCity;
  @Id
  @Column(length = 3)
  private String endCity;
  private String name;

  public String getStartCity() {
    return startCity;
  }

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

  public String getEndCity() {
    return endCity;
  }

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

  public String getName() {
    return name;
  }

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

  @Override
  public String toString() {
    return "Airline [startCity=" + startCity + ", endCity=" + endCity + ", name=" + name + "]";
  }

}

MainTest

package com.jege.jpa.composite;

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

import org.junit.Test;

/**
 * @author JE哥
 * @email 1272434821@qq.com
 * @description:復合主鍵-2個@Id測試
 */
public class MainTest {
  @Test
  public void crud() {
    EntityManagerFactory entityManagerFactory = null;
    EntityManager entityManager = null;

    try {
      entityManagerFactory = Persistence.createEntityManagerFactory("com.jege.jpa");
      entityManager = entityManagerFactory.createEntityManager();

      Airline airline = new Airline();
      airline.setStartCity("PEK");
      airline.setEndCity("SHA");
      airline.setName("bj to sh");// 新建狀態

      entityManager.getTransaction().begin();
      entityManager.persist(airline);// 托管狀態

      airline.setName("北京飛上海");

      entityManager.getTransaction().commit();

      Airline airline1 = new Airline();
      airline1.setStartCity("PEK");
      airline1.setEndCity("SHA");

      // hibernate:瞬時狀態,持久狀態(托管),游離(脫管)狀態

      airline1 = entityManager.find(Airline.class, airline1);
      System.out.println("name:" + airline1.getName());

      entityManager.getTransaction().begin();
      entityManager.remove(airline1);
      entityManager.getTransaction().commit();
      // airline1變為刪除狀態

      entityManager.getTransaction().begin();
      entityManager.persist(airline1);
      entityManager.getTransaction().commit();
    } catch (PersistenceException e) {
      e.printStackTrace();
      entityManager.getTransaction().rollback();
      throw e;
    } finally {
      if (entityManager != null && entityManager.isOpen())
    entityManager.close();// 游離狀態
      if (entityManagerFactory != null && entityManagerFactory.isOpen())
    entityManagerFactory.close();
    }
  }
}

源碼地址

https://github.com/je-ge/jpa

如果覺得我的文章對您有幫助,請打賞支持。您的支持將鼓勵我繼續創作!謝謝!

總結

以上是生活随笔為你收集整理的JPA 系列教程11-复合主键-2个@Id的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。