Wie kann ich diesen Polymorphismus in Hibernate Karte, XML, ohne Tabellen zusätzliche übergeordnete erstellen?

StackOverflow https://stackoverflow.com/questions/4520988

Frage

Ich versuche, einen Baum von POJOs in Hibernate abzubilden, so dass ich (a) kurz Verwendung UUIDs für Primärschlüssel überall und (b) von außen aufzuzwingen gesetzt artigen Beziehungen zwischen ansonsten nicht verwandten Tabellen. Dies scheint darauf hinzu Arbeit große Anmerkungen verwenden, sondern für das Leben von mir, ich kann sie nicht auf die gleiche Weise mit HBM XML-Mapping zu arbeiten.

Zum Beispiel die folgenden (abgekürzt) Klassen gegeben:

@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public abstract class Unique {
    private String uuid;
}

@Entity
public class Relationship extends Unique {
    @OneToMany
    private Set<Unique> members;
}

@Entity
public class Activity extends Unique {
    private String name;
}

@Entity
public class AssociatedXML extends Unique {
    @Lob
    private String xml;
}

... easy peasy. Wenn ich hbm2ddl laufen schafft es die Tabellen Relationship, Relationship_Unique, Activity und AssociatedXML. Abfragen wie die folgende HQL zu funktionieren scheint groß:

session.createQuery("select xml "
    + "from AssociatedXML as xml, Relationship as rel "
    + "left join rel.members as m "
    + "where m.uuid = :uuid").setString("uuid", activity.getUuid());

Inzwischen Ich versuche, XML-Konfiguration zu bewegen. Die POJOs werden aus einem XML-Schema erzeugt. Da die Quelle erzeugt wird, versuche ich, Hand-Bearbeitung zu vermeiden, die Anmerkungen hinzuzufügen.

Ich habe jede XML-Konfiguration versuche ich mich vorstellen kann (wie auch fooling mit dem Ausgang des <hbm2hbmxml/> in den Hibernate Tool). Ich kann nicht mit einer Konfiguration kommen, die nicht entweder eine zusätzliche Unique Elterntabelle beitreten, oder nicht in der Sitzung Fabrik mit dem Fehler Beteiligung eines zusätzlichen erstellen:

Referenzen Verband unmapped Klasse: Unique

hat jemand einen Vorschlag, was meine XML-Konfigurationsdateien aussehen sollte? Oder werde ich einen schlechten Weg nach unten?

War es hilfreich?

Lösung

Es ist so etwas wie folgt aus:

<class name="Unique" abstract = "true">
    <id name="uuid" />

    <union-subclass name="Relationship">
        <set name="members" table = "Relationship_Unique" >
            <key />
            <many-to-many class = "Unique" unique="true"/>
        </set>
    </union-subclass>

    <union-subclass name="Activity">
        <property name = "name" />
    </union-subclass>

    <union-subclass name="AssociaXML">
        <property name = "xml" />
    </union-subclass>
</class>

Siehe auch:

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top