Composite IDs und Hibernate Tools

Für den Web Service, der die Einkäuferdaten liefern soll, hab ich mit den HibernateTools Klassen und hbm.xml-Dateien generieren lassen.

Das ging soweit auch ganz gut. Nun gibt es aber anscheinend Tabellen in der zu integrierenden Datenbank, die keinen Primary Key haben!

Aus diesen machen die Tools dann zusammengesetze Primärschlüssel, und zwar aus allen Attributen der Tabelle.

<!– Generated 11.07.2006 15:42:45 by Hibernate Tools 3.1.0.beta5 –>
<hibernate-mapping>
<class name=”net.cpu.diplomarbeit.data.db.TEinkaeufer” table=”T_Einkaeufer” schema=”dbo” catalog=”EinkaeuferDB”>
<composite-id name=”id” class=”net.cpu.diplomarbeit.data.db.TEinkaeuferId”>
<key-property name=”telvPersnr” type=”string”>
<column name=”telvPersnr” length=”9″ />
</key-property>
<key-property name=”telvName” type=”string”>
<column name=”telvName” length=”50″ />
</key-property>
<key-property name=”telvVorname” type=”string”>
<column name=”telvVorname” length=”30″ />
</key-property>
<key-property name=”telvKostenstelle” type=”string”>
<column name=”telvKostenstelle” length=”10″ />
</key-property>
<key-property name=”telvAbteilung” type=”string”>
<column name=”telvAbteilung” length=”40″ />
</key-property>
<key-property name=”telvEmail” type=”string”>
<column name=”telvEmail” length=”128″ />
</key-property>
<key-property name=”telvTelefon” type=”string”>
<column name=”telvTelefon” length=”63″ />
</key-property>
<key-property name=”telvFax” type=”string”>
<column name=”telvFax” length=”63″ />
</key-property>
<key-property name=”telvMobExt” type=”string”>
<column name=”telvMobExt” length=”63″ />
</key-property>
<key-property name=”telvFirma” type=”string”>
<column name=”telvFirma” length=”60″ />
</key-property>
<key-property name=”telvPostfach” type=”java.lang.Integer”>
<column name=”telvPostfach” />
</key-property>
<key-property name=”telvStrasse” type=”java.lang.Integer”>
<column name=”telvStrasse” />
</key-property>
<key-property name=”telvPlz” type=”java.lang.Integer”>
<column name=”telvPLZ” />
</key-property>
<key-property name=”telvOrt” type=”string”>
<column name=”telvOrt” length=”60″ />
</key-property>
<key-property name=”telvLand” type=”string”>
<column name=”telvLand” length=”3″ />
</key-property>
<key-property name=”telvGesellschaft” type=”string”>
<column name=”telvGesellschaft” length=”40″ />
</key-property>
<key-property name=”telvBereichKurz” type=”string”>
<column name=”telvBereichKurz” length=”40″ />
</key-property>
<key-property name=”telvBereichDe” type=”string”>
<column name=”telvBereich_de” />
</key-property>
<key-property name=”telvBereichEn” type=”string”>
<column name=”telvBereich_en” />
</key-property>
<key-property name=”telvWerkName” type=”string”>
<column name=”telvWerkName” length=”60″ />
</key-property>
</composite-id>
</class>
</hibernate-mapping>

Ich muss allerdings eine 1:n Relation zu einer solchen Tabelle erstellen und da gibt es näturlich eine Fehlermeldung, da der Primärschlüssel mehre Attribute enthält und der Fremdschlüssel darauf nur eines. Deshalb musste ich diese Klasse von Hand umstrukturieren und einen Primärschlüssel setzen.

<id name=”telvEmail” type=”string”>
<column name=”telvEmail” length=”128″/>
</id>

Da ich die Daten nur auslesen muss, sollte es keine Probleme geben. Beim Schreiben muss dieser Primärschlüssel dann eben von Hand gesetzt und auf Eindeutigkeit geprüft werden.

Advertisements



    Kommentar verfassen

    Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

    WordPress.com-Logo

    Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

    Twitter-Bild

    Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

    Facebook-Foto

    Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

    Google+ Foto

    Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

    Verbinde mit %s



%d Bloggern gefällt das: