2016-03-22 14 views
0

Ich versuche, eine Beziehung zwischen zwei Klassen, die eine Eins-zu-Eins-Beziehung haben, zuzuordnen. Nach dem Nachschlagen im Internet scheint es so, als würden die Leute es bevorzugen, es mit vielen eins zu eins zu mappen.Hibernate Mapping xml Eins-zu-eins (viele-zu-eins)

Zum Beispiel haben Sie eine Klasse Order und eine Klasse Bill. Bill hält einen FK auf der Rechnung.

Hier ist mein Mapping für Bill:

<?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> 

Wie Sie oben in meiner Abbildung von Bill sehen können ich die Spalte von Fk zum Auftrag geben kann, aber was soll ich für Auftrag in meinem Mapping setzen da es kein Fk zu Bill hat?

<?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> 

Antwort

1

Sie sollten versuchen, es so zu formulieren, wie es ist: eins zu eins.

Der einzige Grund, warum ich mir bewusst bin, warum Leute Many-to-One empfehlen, ist wegen der Lazy Loading-Probleme auf der inversen Seite der Eins-zu-eins-Assoziationen. Dann wollen Sie wahrscheinlich eine falsche Eins-zu-Viele-Assoziation auf der inversen Seite (schließlich ist es die einzige logische Invers-Seite von Eins-zu-Eins).

Werfen Sie einen Blick auf this answer für verschiedene Alternativen.

+0

ok danke, ich werde es versuchen – William