(九)Hibernate 的複合主鍵

來源:互聯網
上載者:User

標籤:nsa   get   2.4   net   llb   主鍵   尋找   語文   use   

一、什麼是複合主鍵? 
  • 一張表的主鍵是由多個欄位組成,這個主鍵就被稱為複合主鍵。  主鍵是唯一確定某條記錄的欄位,比如公民的社會安全號碼就是一個主鍵,因為由社會安全號碼這個主鍵就可以確定
  • 某個公民。   有一種情況,比如學產生績這張表中,一個學號無法唯一確定這個學生的成績,因為這個學生有多科成績,這時候“學號+學科”才是主鍵,兩者結合才能唯一確定一條記錄,也就是成績。

 

二、hibernate產生含有複合主鍵表的映射bean

  2.1  建立有複合主鍵的表

  這張表有複合主鍵

  2.2  產生對應檔

  Hibernate 對含有複合主鍵的表產生bean的時候會把複合主鍵作為單獨的bean獨立產生。

 

  2.3  分析Score和ScoreId bean

  2.4  分析總對應檔

 

 三、對有符合主鍵的bean進行增刪改查操作

 案例一  Test_CompositeId.java

package action;import java.io.Serializable;import org.hibernate.Session;import org.hibernate.Transaction;import bean.Score;import bean.ScoreId;import util.HibernateUtil;public class Test_CompositeId {    public static void main(String[] args) {        // Test_CompositeId.select();        // Test_CompositeId.save();        Test_CompositeId.update();    }    /**     * 尋找     */    private static void select() {        Session session = null;        Transaction tran = null;        ScoreId id = new ScoreId();        id.setUserid(1);        id.setSubject("語文");        try {            session = HibernateUtil.getSessionFactory().getCurrentSession();            tran = session.beginTransaction();            Score score = (Score) session.get(Score.class, id);            System.out.println("成績=" + score.getScore());            tran.commit();        } catch (Exception e) {            e.printStackTrace();            tran.rollback();        }    }    private static void save() {        Session session = null;        Transaction tran = null;        ScoreId id = new ScoreId();        id.setSubject("英語");        id.setUserid(1);        Score score = new Score();        score.setId(id);        score.setScore(100);        try {            session = HibernateUtil.getSessionFactory().getCurrentSession();            tran = session.beginTransaction();            Serializable primarykey = session.save(score);            System.out.println(primarykey);            tran.commit();        } catch (Exception e) {            e.printStackTrace();            tran.rollback();        }    }    /**     * 執行更新操作     */    private static void update() {        Session session = null;        Transaction tran = null;        ScoreId id=new ScoreId();        id.setUserid(1);        id.setSubject("英語");                Score score=new Score();        score.setId(id);        score.setScore(12);                try {            session = HibernateUtil.getSessionFactory().getCurrentSession();            tran = session.beginTransaction();                        session.update(score);                                    tran.commit();        } catch (Exception e) {            e.printStackTrace();            tran.rollback();        }    }}

 

所有代碼在這裡 :  連結

 

(九)Hibernate 的複合主鍵

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.