2010-01-14 5 views
6

Ich verwende JOINED-Vererbungsstrategie mit EclipseLink JPA-Implementierung. Ich habe festgestellt, dass EclipseLink dem Datenbankschema eine Diskriminatorspalte mit dem Namen DTYPE hinzufügt. Ich verstehe, dass ein Diskriminator für eine Tabelle Vererbungsstrategie benötigt wird, aber warum für JOINED Strategie?Warum fügt EclipseLink eine Diskriminatorspalte für die verknüpfte Vererbungsstrategie hinzu?

EclipseLink benötigt diese Spalte, weil ich nach dem Entfernen Fehler habe. Wird diese Spalte aus Leistungsgründen usw. hinzugefügt? Ich bin nicht besonders glücklich darüber, da diese Spalte vom Standpunkt des Datenbankschemas nur unnötige Unordnung darstellt.

Hibernate-basierte JPA macht nichts ähnliches.

+0

Vielleicht haben Sie einen Fehler in Ihrer Frage gemacht. Sie sagen, Sie verstehen, warum, wenn seine JOINED aber nicht, wenn seine JOINED ... – cletus

Antwort

1

Von Joined Table Inheritance:

In der verbundenen Tabelle Vererbung jede Klasse Aktien Daten aus der Root-Tabelle. Zusätzlich definiert jede Unterklasse ihre eigene Tabelle , die ihren erweiterten -Status hinzufügt. Das folgende Beispiel zeigt zwei Tabellen, Projekt- und L_PROJECT sowie als zwei Klassen, Projekt und LargeProject:

...

Der Diskriminator Spalt ist das, was die Art bestimmt, und damit, was Tisch verbunden zu verwenden, so dass Sie eine Diskriminatorspalte in der übergeordneten Tabelle benötigen.

+4

Genau, und das ist, was ich verstehen will: warum EclipseLink diese discriminator Spalte verwendet - es ist nicht notwendig, JOINED Strategie basiert auf Fremdschlüssel Zuordnung zwischen Klassen. Die JPA-Spezifikation besagt, dass der Diskriminator für die JOINED-Strategie optional ist - Hibernate JPA verwendet sie zum Beispiel nicht - und ich würde gern erfahren, welchen Vorteil die Verwendung von EclipseLink hat. –

+0

Ich denke, Sie beziehen sich auf http://docs.jboss.org/hibernate/core/3.3/reference/en/html/inheritance.html#inheritance-tablepersubclass. ExlipseLink ist in dieser Hinsicht nur explizit. Die Diskriminatorspalte vermeidet das Problem, EXISTEN (oder ähnliche) Prüfungen durchzuführen, um die geeignete Unterklasse zu finden. Selbst wenn es optional wäre, würde ich es immer noch benutzen. – cletus

+0

Das macht Sinn, Diskriminator macht die Umsetzung sicher einfacher. Danke für deine Antwort! –

Verwandte Themen