標籤: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 的複合主鍵