2012-10-31 61 views
0

我嘗試瞭解hibernate,但它非常困難。休眠多對多不起作用

我現在有一個問題,我不明白。它關於我的映射文件中的多對多關係。如果我保存一個對象,它不會在數據庫中保存「許多」,但它不會保存它。我認爲這是在我的地圖上,但我沒有看到它。

這是關於飛機和飛機上的工作人員。當我救飛機時,工作人員必須隨身攜帶。但那不會發生。

這裏是我的兩個映射: 飛行映射:

<?xml version="1.0"?> 
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 
    <!-- Generated 28-sep-2012 11:49:37 by Hibernate Tools 3.2.1.GA --> 
    <hibernate-mapping> 
    <class name="model.Flight" table="flights" catalog="flyaway_db"> 

    <id name="number" type="int"> 
     <column name="FlightNumber" /> 
     <generator class="assigned" /> 
    </id> 

    <set name="staffs" table="flightstaff" cascade="save-update"> 
     <key> 
      <column name="FlightNumber" not-null="true" /> 
     </key> 
     <many-to-many class="model.Staff"> 
      <column name="StaffNumber" length="5" not-null="true" /> 
     </many-to-many> 
    </set> 

</class> 
</hibernate-mapping> 

工作人員映射:

<?xml version="1.0"?> 
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 
<!-- Generated 28-sep-2012 11:49:37 by Hibernate Tools 3.2.1.GA --> 
<hibernate-mapping> 
<class name="model.Staff" table="staff" catalog="flyaway_db"> 

    <id name="staffNumber" type="string"> 
     <column name="StaffNumber" length="5" /> 
     <generator class="assigned" /> 
    </id> 

    <set name="flightses" table="flightstaff" cascade="save-update"> 
     <key> 
      <column name="StaffNumber" length="5" not-null="true" /> 
     </key> 
     <many-to-many class="model.Flight"> 
      <column name="FlightNumber" not-null="true" /> 
     </many-to-many> 
    </set> 
</class> 
</hibernate-mapping> 
+0

不要真的得到「如果我保存一個對象,它不會在我的數據庫中保存」許多「,但它不會保存它」。你能重新表達嗎? –

+0

當我說保存,然後它保存在我的數據庫的航班,但不是他們很多。所以它不會爲該航班節省工作人員。 –

回答

3

您在bidirectional關係的一面忘記了inverse="true"

+0

我用它在兩邊。這有什麼區別嗎? –

+0

是的,它應該只在一側設置爲true。如果你願意的話,你也可以明確地設置「false」。 –

+0

我也會使用Flight作爲主方'inverse =「false」',並從另一端刪除級聯。 –

0

對不起所有的問題,但它是模型是不正確的!我認爲帕奇的答案也有幫助! 謝謝全部