這篇文章主要介紹“怎么用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進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。