您好,登錄后才能下訂單哦!
這篇文章主要介紹“怎么用Hibernate處理沒有主鍵的視圖”,在日常操作中,相信很多人在怎么用Hibernate處理沒有主鍵的視圖問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”怎么用Hibernate處理沒有主鍵的視圖”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
視圖的詳情
SELECT TEST_FLIGHT_TIME AS TESTTIME,JIHAO AS JIHAO,'1' AS TYPE,FP_ID,REF_ID FROM S_FLIGHT_PLAN -- 1:主機檢查時間
UNION
SELECT INSPECT_TIME AS TESTTIME,JIHAO AS JIHAO,'2' AS TYPE,FP_ID,REF_ID FROM S_FLIGHT_PLAN -- 2:主機試飛時間
UNION
SELECT TEST_FLIGHT_TIME1 AS TESTTIME,STANDBY_PLANE AS JIHAO,'3' AS TYPE,FP_ID,REF_ID FROM S_FLIGHT_PLAN -- 3:備份機檢查時間
UNION
SELECT INSPECT_TIME1 AS TESTTIME,STANDBY_PLANE AS JIHAO,'4' AS TYPE,FP_ID,REF_ID FROM S_FLIGHT_PLAN -- 4:備份機試飛時間 -- 試飛時間,試飛機號,試飛類型,飛行任務id,派遣任務id
a) 本視圖中使用了TSETTIME,JIHAO,TYPE,FP_ID,REF_ID五個字段,由于每個字段都不是唯一的,所以沒有主鍵
由于hibernate處理所有數據,基本都是要有主鍵的,所以在按創建實體類的時候,會有麻煩,有了下邊的解決方法.
新建一個主鍵類,用幾個屬性作為聯合主鍵,用@Embeddable注解修飾,將幾個屬性放入進來,寫入get,set方法,并且重寫equals()和hashCode()方法.
@Embeddable public class VTestFlightKey implements Serializable { private static final long serialVersionUID = 1L; private Date TESTTIME; /** JIHAO 機號 / private String JIHAO; /* TYPE */ private String TYPE; /* FP_ID 飛行計劃id */ private String FP_ID; private String REF_ID; public String getREF_ID() { return REF_ID; } public void setREF_ID(String rEF_ID) { REF_ID = rEF_ID; } public String getFpid() { return FP_ID; } public void setFpid(String fpid) { this.FP_ID = fpid; } public Date getTestTime(){ return TESTTIME; } public void setTestTime(Date testTime){ this.TESTTIME=testTime; } public String getJihao(){ return JIHAO; } public void setJihao(String jihao){ this.JIHAO=jihao; } public String getType(){ return TYPE; } public void setType(String type){ this.TYPE=type; } @Override public int hashCode() { return this.TESTTIME.hashCode(); } @Override public boolean equals(Object o) { if(o instanceof VTestFlightKey){ VTestFlightKey key = (VTestFlightKey)o ; if(this.TESTTIME.equals(key.getTestTime()) && this.JIHAO.equals(key.getJihao()) && this.TYPE.equals(key.getType()) && this.FP_ID.equals(key.getFpid()) && this.REF_ID.equals(key.getREF_ID())){ return true ; } } return false ; } }
將主鍵類,作為主類的ID屬性,并用@Id注解修飾,且主鍵類中已經用來做聯合主鍵的屬性,不再寫在主類中,
@Entity @Table(name="V_TEST_FLIGHT") public class VTestFlight{ private static final long serialVersionUID = 1L; //由于所有字段用用來做聯合主鍵,所以字段都在主鍵類VTestFlightKey @Id private VTestFlightKey vTestFlightKey; public VTestFlightKey getvTestFlightKey() { return vTestFlightKey; } public void setvTestFlightKey(VTestFlightKey vTestFlightKey) { this.vTestFlightKey = vTestFlightKey; } }
到此,關于“怎么用Hibernate處理沒有主鍵的視圖”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。