JPA-Modellierung

Status
Nicht offen für weitere Antworten.

fischefr

Aktives Mitglied
Hallo Zusammen!
Vielleich kann mir jemand etwas weiterhelfen. Ich versuche folgende Konstellation mit JPA zu modellieren:

2 Entitäten: D und DZS, wobei eine 1 zu n Beziehung zwischen den beiden besteht

Der Primärschlüssel von D ist eine (numerische ID)
Der Primärschlüssel von DZS besteht aus dem D (bzw. dessen ID) und einem String (Variablenname "art")

Zunächst habe ich versucht, Art und D in eine Embeddible-Klasse auszulagern und diese in DZS einzubinden. Lt. Api ist allerdings ein @JoinColumn darin nicht zulässig.

Wie modelliere ich das richtig d.h. wie müssen die Modelklassen mit den Annotations aussehen? Das Datenbankschema darf ich dabei nicht verändern.
Kann JPA (genauer Topllink Essentials) das überhaupt so abbilden? Mein Problem liegt darin, dass in DSZ D sowohl foreign key als auch Bestandteil des eigenen Primärschlüssels ist.
 
M

maki

Gast
Wieso willst du denn technischen Schlüssel (id) mit einem fachlichen (art) mischen um einen Primärschlüssel zu erhalten?

IMHO der falsche Weg.

Technischer Schlüssel sorgt für technische Identität, für die fachliche "Gleichheit" sollte man equals und hashcode überschreiben, wobei weder die eine noch die andere Methode den technischen Schlüssel nutzen sollte, sondern ausschliesslich fachliche Attribute/properties.
 

fischefr

Aktives Mitglied
Es gibt eine Menge von Arten, die jeweil pro ID 1x vorkommen können, aber das steht eigentlich gar nicht zur Debatte, weil ich das nicht ändern kann.

ID von D und der Wert von Art sind nun mal in der Tabelle von DZS als Primärschlüssel definiert - daran kann ich definitiv nichts rütteln.

Die Tabelle ist fix, ich kann nur die Model-Klassen an die Vorgabe anpassen. Wie setz ich das am geschicktesten jetzt um?
 
M

maki

Gast
IMHO ist JPA dafür der falsche Weg bestehende Datenmodelle als Objekte darzustellen.

Die Objekte/Klassen werden dann nämlich anhand der Tabellen abgebildet, aus einem ER Modell mal schnell ein Domainmodell zu machen ist nicht einfach bzw. nicht immer möglich.

Bei einfacheren Schemas sollte es gehen, es soll für Hibernate ein paar Tools geben welche das können.
 

foobar

Top Contributor
MyEclipse kann aus einem DB-Schema Hibernate, EJB oder JPA Klassen erzeugen. Das funktioniert sehr gut und spart ne Menge Zeit. Ein Hoch auf MyEclipse :)
 
F

FischeFr_

Gast
Tja, bin jetzt einen Schritt weiter denk ich.
Hab jetzt ein Modell, das theoretisch funktionieren sollte, leider wird dabei D als Teil des Primärschlüssels ignoriert d.h. werd jetzt wohl mit einem dirty hack arbeiten müssen. Ich fürchte ich bin da wohl wirklich an die Leistungsgrenzen von TopLink Essentials gestoßen. Am Montag gehts weiter mit dem Mist.
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen


Oben