2016-03-22 52 views
0

我想映射兩個類之間具有一對一關係的關係。在互聯網上查看後,似乎人們更喜歡使用多對一來映射它。休眠映射xml一對一(多對一)

例如有一個班級訂單和一個班級比爾。比爾持有發票的FK。

這裏是我的比爾映射:

<?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 Mar 21, 2016 10:46:20 PM by Hibernate Tools 3.5.0.Final --> 
<hibernate-mapping> 
    <class name="domain.Bill" table="BILL"> 
     <id name="id" type="int"> 
      <column name="ID" /> 
      <generator class="native" /> 
     </id> 

     <many-to-one name="order" class="domain.Order" column="ORDER_ID" unique="true" not-null="true"/> 
    </class> 
</hibernate-mapping> 

正如你可以在上面看到,在我的條例草案的映射我可以指定FK的列訂單,但我應該把我的映射訂單既然它沒有比爾的Fk?

<?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 Mar 21, 2016 10:46:20 PM by Hibernate Tools 3.5.0.Final --> 
<hibernate-mapping> 
    <class name="domain.Order" table="ORDER"> 
     <id name="id" type="int"> 
      <column name="ID" /> 
      <generator class="native" /> 
     </id> 

     <many-to-one name="bill" class="domain.Bill" ???? fetch="select"/> 

    </class> 
</hibernate-mapping> 

回答

1

您應該嘗試按照原樣映射它:一對一。

我意識到爲什麼人們可能推薦多對一的唯一原因是因爲一對一關聯反面的延遲加載問題。那麼你可能需要在反面僞造一對多關聯(畢竟它是多對一的唯一邏輯反面)。

然而,看看this answer爲不同的替代品。

+0

好的謝謝,生病了試試看 – William