我在專用網絡上工作,因此太難以複製和粘貼我的代碼。我發現了一堆接近我需要的答案,但沒有一個能解決問題。我會試着做一個我的代碼的簡單例子,希望能夠解釋我的問題。使用Hibernate註釋映射表的一列
@Table(name="DRIVER")
class Driver {
long id; //ID - primary key of Driver
String driverIdentStr; // DRIVER_IDENT_STR - like driver's license #
}//end class Driver
@Table(name="GROUP_PARTICIPANT")
class GroupParticipant {
long id; //ID - primary key of GroupParticipant
long driverId; //DRIVER_ID - id of the Driver participanting and maps to Driver.id
//I just want this one value from Driver and not the whole Driver...
//I've tried:
//@Formula("(select driverIdentStr from Driver where Driver.id = DRIVER_ID)")
//also tried:
//@Column(table="DRIVER", name="driverIdentStr")
String driverIdentStr;
}//end class GroupParticipant
該@Formula失敗,「表或視圖未找到」,但我肯定有一個Driver類定義映射到DRIVER表。當我將@Formula中的查詢語言改爲SQL而不是HQL時,Hibernate抱怨GROUPPARTICIPANT0.driverIdentStr是一個無效的標識符 - 認爲它試圖從GroupParticipant檢索driverIdentStr,而不是從Driver(??)獲取值。
@Column失敗,我想,因爲我不知道如何映射到驅動程序,我有GroupParticipant驅動程序。
底線,我想不出如何獲取GroupParticipant.driverIdentStr從加入Driver.id GroupParticipant.driverId和獲取Driver.driverIdentStr。
任何幫助將不勝感激。