(九)Hibernate 的復合主鍵
阿新 • • 發佈:2017-05-13
bean blank () 學生 lba nts 多個 try null
一、什麽是復合主鍵?
- 一張表的主鍵是由多個字段組成,這個主鍵就被稱為復合主鍵。 主鍵是唯一確定某條記錄的字段,比如公民的身份證號就是一個主鍵,因為由身份證號這個主鍵就可以確定
- 某個公民。 有一種情況,比如學生成績這張表中,一個學號無法唯一確定這個學生的成績,因為這個學生有多科成績,這時候“學號+學科”才是主鍵,兩者結合才能唯一確定一條記錄,也就是成績。
二、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 的復合主鍵