2011-11-02 44 views
0

我是新來的冬眠世界,仍然在學習它。我正在嘗試使用hibernate在數據庫中堅持一個類。這個類的對象在其客戶類中可以有不同的含義。以下是類的定義,我想堅持:如何使用以多種不同方式使用的hibernate持久化類?

class Entity { 
    int id; 
    String name; 
} 

class ClientClass { 
    int clientClassID; 
    List<Entity> employerList; 
    List<Entity> clientList; 
} 

映射文件ClientClass如下:

<hibernate-mapping package="com.foo.bar.model"> 
    <class name="ClientClass" table="CLIENTS"> 
     <id name="clientClassID" column="CLIENT_ID" type="integer" 
      unsaved-value="0"> 
      <generator class="native" /> 
     </id> 
     <set name="clientList" table="PROJECT_CLIENTS" cascade="all"> 
      <key column="CLIENT_ID" /> 
      <many-to-many column="CLIENT_ID" class="Entity" /> 
     </set> 
     <property name="description" type="string" length="1000" /> 
     <set name="employerList" table="PROJECT_EMPLOYERS" cascade="all"> 
      <key column="CLIENT_ID" /> 
      <many-to-many column="EMPLOYER_ID" class="Entity" /> 
     </set> 
     </class> 
</hibernate-mapping> 

我無法理解如何編寫映射Entity類? 請幫幫我。如果你需要更多的細節,請讓我知道。

在此先感謝!

回答

1

您必須首先將Entity作爲自己的班級。

<class name="Entity" table="ENTITY"> 
    <id name="id" column="id" type="integer" 
     unsaved-value="0"> 
     <generator class="native" /> 
    </id> 
    <property name="name" type="string" /> 
</class> 

然後,您可以將它作爲多對多關聯添加到其他類中。我不太瞭解EMPLOYER_NAMECLIENT_ID應該如何工作。

欲瞭解更多文檔,請參閱:http://docs.jboss.org/hibernate/core/3.3/reference/en/html/collections.html#collections-ofvalues

+0

非常感謝您的回答。如果我不想創建ENTITY表,那我該怎麼辦?而不是ENTITY類,我想創建名爲CLIENT_LIST或EMPLOYER_LIST的表,其中包含id和name列。 – Shekhar

+0

它仍然是多對多的嗎?我認爲這是一對多的,但這不是解決方案。我會創建兩個擴展'Entity'的類並映射它們。不可能在兩個表上映射一個實體。 – powerMicha

+0

好吧,但然後我不得不不必要地創建這些子類,只是因爲休眠不能做到這一點。實際上,早些時候我創建了不同的數據庫模式,但我正面臨着一些問題。所以我把它改成了上面的那個。我發佈了關於SO的問題。這裏是它的鏈接:http://stackoverflow.com/questions/7964417/unable-to-generate-tables-using-hibernate。請看看它。 – Shekhar

相關問題