2014-02-21 167 views
0

Hibernate映射不同表一個POJO類Hibernate映射不同表一個POJO類

我有要求在休眠映射兩個不同的表的一個POJO類。

我曾嘗試使用配置加入Hibernate映射,但我得到錯誤,如

DB2 SQL Error: SQLCODE=-204, SQLSTATE=42704.

我的表關係圖中所示。

enter image description here

我的Hibernate映射如下。

<hibernate-mapping> 
    <class name="com.mydomain.Student" table="STUDENT_TABLE" schema="UNIV"> 
     <id name="id" type="java.lang.Integer"> 
      <column name="ID" /> 
      <generator class="native" /> 
     </id> 

     <property name="studentId" type="java.lang.Integer"> 
      <column name="STUDENT_ID" /> 
     </property> 

     <property name="course" type="java.lang.Integer"> 
      <column name="COURSE_ID" /> 
     </property> 

     <join table="COURSE_TABLE" > 
      <key column="COURSE_ID" />  
       <property name="courseName" type="string"> 
        <column name="COURSE_NAM" /> 
         </property> 

         <property name="courseTeacher" type="string"> 
        <column name="COURSE_Teacher" /> 
         </property>    

     </join> 

    </class> 

</hibernate-mapping> 

我的學生班有getter和setter for。

id 
studentId 
    course 
courseName 
courseTeacher 

有人可以幫我解決這個映射問題嗎?

+0

您的需求有些出乎意料..您的映射似乎混亂。看着你的學生班似乎studentId是外鍵......這將有學生的詳細信息,ID將成爲休息領域的主鍵。是嗎? – DarkHorse

回答

0

看到你的表關係圖後。你的數據庫設計是錯誤的。

一個學生可以註冊超過1個療程。並且1個課程可以包含1個以上的學生。

所以基本上它的一個許多映射。

下面是一些例子爲你實現它。

Example1

Example2

UPDATE

我是在即興發揮你的設計的正確方法。但是如果你仍然堅持它的一對一映射,那麼這裏是一個similar question with answer。您將要求id的確切值,以便它僅對應於一條記錄。相同看看hibernate-doc

+0

我剛剛舉例說明。我的表格關係是一對一的。 – user3054108

+0

基本上我想加入使用不是學生表中主要的列。 – user3054108

+0

我的問題是如何將多個表映射到單個pojo。即當我選擇學生時,我想獲得課程名稱和課程老師。 – user3054108

0

您驗證所有列的名稱在Hibernate映射是否正確?查詢error code -204,它顯示「名稱是一個未定義的名稱」。