Hibernate-Mapping bei mehreren FK´s auf die selbe Tabelle

Status
Nicht offen für weitere Antworten.

ch3fk0ch

Mitglied
Hallo Gemeinde!

Erst mal muss ich loswerden, dass dieses Forum hier ein richtig lesenswertes is. Besten Dank erstmal.

Nun zu meiner Problemstellung:
Ich glaube ein Denk-/Mapping-Problem zu haben. Vielleicht habt Ihr ja ne Idee.
Es handelt sich um 2 Tabellen. In einer (Tabelle A) existieren keine FK´s. In der anderen (Tabelle B) existieren mehrere FK´s auf Tabelle A. Also bspw. fk_1, fk_2 etc. Alle referenzieren einen Datensatz aus Tabelle A. Also liegt eine 1:n - Beziehung vor (erster Fehler?).
Somit ergibt sich in den xyzData-Klassen folgendes Mapping:

TabelleAData:
Code:
@OneToMany(mappedBy="fk_1", fetch=EAGER)
public Collection<TabelleBData> getTabelleB(){
    return tabelleB;
}
--Setter--

TabelleBData:
Code:
@MabyToOne(fetch=EAGER)
@JoinColumn(name="fk_1")
public TabelleAData getFk_1(){
    return fk_1;
}
-- Setter --
(hier beispielhaft nur einer von mehreren FK´s).

Die Frage wäre nun, brauche ich in Tabelle A mehrere Objekte vom Ty Tabelle B, um alle FK´s zu berücksichtigen? Oder reicht meine eine Collection aus?
Ist es möglich in das mappedBy-Statement mehrere FK-Spalten zu referenzieren? Oder ist das alles grundsätzlich falsch? ^^


Ich hoffe, Ihr könnt erkennen, was ich meine, wenn net, bitte sagen, ich umschreibe gern mehr :)

Besten Dank für Eure Aufmerksamkeit.

Grüße
 

KSG9|sebastian

Top Contributor
in der .hbm.xml-Datei kannst du doch mehrere many-to-ones bzw. set/bags definieren welche an ein Attribut der Klasse bzw. an eine Tabellenspalte gebunden sind.

Wie das mit ner Collection (sinnvoll) lösbar wäre wüsste ich nicht.

//edit: Machst du alles über annotations ? Grausam ;D.. mapping-Dateien find ich besser
 

ch3fk0ch

Mitglied
Hi!

Erstmal besten Dank für die schnelle Antwort. Ich werd mir wohl dann nochmals die Hibernate-Doku zu Gemüte führen. Denn wenn das in ner externeen Datei möglich is, sollte das über die Annotations wohl auch gehen. (Ja, mags gern am Platz ^^).

Aber rein von der Überlegung her, also der beziehung, des Tabellenaufbaus, is OK, meinst? Musst verstehn, ich bin kein DB-Jünger, aba ohne das bringt mir mein lieber Anwendungskern eben wenig :/

Grüße
 

KSG9|sebastian

Top Contributor
Ich hatte mal das gleiche Problem, dass ich drei FKs auf dieselbe Tabell hatte..aber da hab ich kein Hibernate verwendet.
Aber es geht definitiv mit Hibernate..aber wie es mit Hibernate Annotations geht weiß ich net, ich arbeite gerner mit ner externen Mapping-Datei.
 

ch3fk0ch

Mitglied
Hi nochmals!

Habs gefunden:

@ManyToOne
@JoinColums({@JoinColumn(name="fk_1"), @JoinColumn(name="fk_2")})
public Collection<TabelleBData> getTabelleBDaten(){
return TabelleBDaten;
}
...

Nur erhalte ich jetzt nen Hibernate-Fehler, der mir da sagen will, dass Collections noch nicht supportet sind... hilfe -.-
Auf den ersten Sieg folgt der Rückschlag :)

Ne Idee jmd?

Grüße und besten Dank :)
 

KSG9|sebastian

Top Contributor
Mach es doch über zwei Attribute:

Tabellen

Tabelle1(id, name) PK: id

Tabelle2(id, fk1, fk2) PK: id, FK: fk1, fk2

Klassen

Code:
public class Tabelle1{
  Integer id;
  String name;

  // konstruktor

  // getter u. setter
}

public class Tabelle2{
   ..
   Tabelle1 tab1;
   Tabelle2 tab2;
   
    // konsturktor

    // getter u. setter
}

Und dann eben tab1 auf tab2.id mappen und tab2 ebenfalls auf tab2.id mappen
 

abollm

Top Contributor
ch3fk0ch hat gesagt.:
Hallo Gemeinde!

Erst mal muss ich loswerden, dass dieses Forum hier ein richtig lesenswertes is. Besten Dank erstmal.

Nun zu meiner Problemstellung:
Ich glaube ein Denk-/Mapping-Problem zu haben. Vielleicht habt Ihr ja ne Idee.
Es handelt sich um 2 Tabellen. In einer (Tabelle A) existieren keine FK´s. In der anderen (Tabelle B) existieren mehrere FK´s auf Tabelle A. Also bspw. fk_1, fk_2 etc. Alle referenzieren einen Datensatz aus Tabelle A. Also liegt eine 1:n - Beziehung vor (erster Fehler?).
[..]
(hier beispielhaft nur einer von mehreren FK´s).

Die Frage wäre nun, brauche ich in Tabelle A mehrere Objekte vom Ty Tabelle B, um alle FK´s zu berücksichtigen? Oder reicht meine eine Collection aus?
Ist es möglich in das mappedBy-Statement mehrere FK-Spalten zu referenzieren? Oder ist das alles grundsätzlich falsch? ^^


Ich hoffe, Ihr könnt erkennen, was ich meine, wenn net, bitte sagen, ich umschreibe gern mehr :)

Ohne jetzt auf deine Hibernate-Mapping-Beispiele einzugehen, ist mir aufgefallen, dass du offenkundig den Fehler bereits bei der Datenbankstruktur begehst:

Wenn du bei zwei Tabellen A und B in einer dieser beiden Tabellen mehr als einen FK auf z.B. die Tabelle A hast, ist deine Struktur nicht vollständig normalisiert und du erhältst demgemäß Redundanzen oder Anomalien, siehe auch:

Normalisierung
 

ch3fk0ch

Mitglied
Guten Morgen!
Ja, das meinte ich. Nur is die Frage, wie man das Problem sonst angehen könnte.
Zum Verständnis:
Es handelt sich bei der ersten Tabelle um eine, in der Getränke stehen. In der zweiten steht dann der Cocktail. Dieser besteht aus mehreren Getränken aus TabelleA und deren Mengenangaben. Rest is Schminke.

Ich denk mir auch schon die ganze Zeit, dass hier was net richtig läuft... komm nur net auf ne Ausweichmöglichkeit.

Grüße
 

KSG9|sebastian

Top Contributor
Das ist eine m:n-Beziehung :) Mach 3 Tabellen:

Cocktail(cocktailId, name)
Getraenk(getraenkId, name)
Zutaten(cocktailId, getraenkId)

Müsste so stimmen..bin noch n bissl müde :)
 

ch3fk0ch

Mitglied
Hi!
Meine Augen sind auch noch etwas klein, deshalb sei es Dir verziehen, hehe.

Ich werd das ma nach Deinen Aspekten umbaun und Bescheid geben.

BESTEN DANK für die nette Hilfe :)


Grüße
 

ch3fk0ch

Mitglied
Hi Ihr!

Habs ma in ne n:m umgebaut und hätte aber nu noch ne Frage:
Bei ner n:m Beziehung muss ich ja keine Data-Klasse schreiben, da ich diese Tablle ja per @JoinTable(...) einbaue.
Wenn ich aber keine Data-Klasse für meine Join-Tabelle habe, kann ich sie auch nicht mappen, richtig?
Wenn ich sie net mappen kann, kann ich aber auch keine namedQueries basteln.
Wie habe ich nun Zugriff auf diese Tabelle?

Sry, is meine erste n:m in Java *duck*


Grüße und besten Dank :)
 

ch3fk0ch

Mitglied
ok, war wohl nochn bissel früh ^^

Kann mir ja die Sachen per Getter holen -.- Verzeiht meine allmorgentliche geistige Abwesenheit.

Nur habich n neues Problem, an dem ich seid ner Weile nun hänge:

Wenn ich meine Query in der DAO abgesetzt habe, macht er mir die Session gleich zu. Soller aber net, da ich sonst nicht auf die Objekte aus meiner JoinTabelle zugreifen kann. Jetz habich mal gegoogelt, aber nicht wirklich ne gute Lösung gefunden >.<
Bekomme noch immer "failed to lazily initialize a collection of role: ..."
Ich denke mir mal, dass nach dem query.uniqueResult(); Statement die Session geschlossen wird.
Gibts ne Mgl. diese aufrecth zu erhalten?

Grüße und besten Dank :)

EDIT: Habs gefunden; musste einfach über beide Collections einmal mit ner for-Schleife drüberlaufen. Sweeeeet :)
Trotzdem danke :)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
T JPA Mapping Enum (hibernate 5) Datenbankprogrammierung 1
T MySQL Hibernate Mapping Datenbankprogrammierung 5
V Frage zu Hibernate-Mapping Datenbankprogrammierung 11
T Hibernate: Reverse Enigneering - kein Mapping von Beziehungen Datenbankprogrammierung 8
Eldorado Hibernate Mapping Datenbankprogrammierung 5
B Hibernate Mapping Problem Datenbankprogrammierung 3
S Hibernate Mapping Datenbankprogrammierung 3
lumo HIbernate: Could not read mapping document Datenbankprogrammierung 9
N OR-Mapping (Hibernate) versus JDBC Datenbankprogrammierung 5
S hibernate-Mapping schlägt fehl Datenbankprogrammierung 8
F Hibernate Mapping problem Datenbankprogrammierung 2
F Type-Mapping von DB-Type zu ObjectType via Hibernate Datenbankprogrammierung 6
Y Hibernate - Problem bei Mapping Datenbankprogrammierung 7
Y Hibernate - Mapping der Beziehung zwischen 2 Tabellen Datenbankprogrammierung 2
G [Hibernate] Map von Dates Mapping mit Annotations Datenbankprogrammierung 6
G Hibernate Mapping für Interface Datenbankprogrammierung 3
S [Hibernate] Map in Map - Wie sieht Mapping Datei aus? Datenbankprogrammierung 10
torresbig MySQL hibernate - could not resolve entity class ... (Datenbank Anfänger) Datenbankprogrammierung 19
I Hibernate Predicate mit IN Clause "Unaware how to convert value to requested type" Datenbankprogrammierung 0
T org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: ..., could not initialize proxy - no Session Datenbankprogrammierung 5
T Realisierungsvorschläge Hibernate SQL Datenbankprogrammierung 1
Zrebna Wie mittels Hibernate eine Join-Tabelle als eigene Java-Klasse erstellen? Datenbankprogrammierung 5
Zrebna Tabellen-Erzeugung via Hibernate ignoriert 'CascadeType' settings Datenbankprogrammierung 1
I Hibernate / JPA - Spaltenname von Query (Select) bekommen Datenbankprogrammierung 6
M Mysql Views und Hibernate Caching Datenbankprogrammierung 4
damike84 Hibernate: persistieren eines Graphen Datenbankprogrammierung 2
N Hibernate Entitäten bei Selects aus 2 Tabellen Datenbankprogrammierung 7
OnDemand Hibernate Realationen Datenbankprogrammierung 7
OnDemand Hibernate ManyToOne Datenbankprogrammierung 5
D Hibernate oneToMany Syntaxfehler Datenbankprogrammierung 3
D Hibernate Error: NoSuchMethodError Datenbankprogrammierung 4
D hibernate mit postgreSQL Datenbankprogrammierung 3
S MySQL Hibernate: Fehler bei Verwendung von 2 unterschiedlichen Enumration Datenbankprogrammierung 3
F Problem mit Hibernate c3p0 Datenbankprogrammierung 2
OnDemand MySQL Trigger löst nicht aus bei Hibernate Update Datenbankprogrammierung 12
OnDemand Hibernate OneToMany ManyToOne Datenbankprogrammierung 61
J Hibernate One-To-One mit Where Klausel Datenbankprogrammierung 6
L hibernate.cfg.xml Could not parse configuration Datenbankprogrammierung 0
L H2 Hibernate definieren? Datenbankprogrammierung 1
H In hibernate.cfg.xml schreiben und auslesen Datenbankprogrammierung 0
K Hibernate: Ein Fluch Datenbankprogrammierung 3
K Java Object mit Hibernate in MySQL abspeichern Datenbankprogrammierung 1
K Eclipse: JBoss Hibernate Tool: Kein Zugriff auf Datenbank Datenbankprogrammierung 5
S JpaRepositories & Hibernate: ungewolltes trim() in findBy Datenbankprogrammierung 7
S MySQL hibernate exception: illegal state exception : entityManagerFactory is closed Datenbankprogrammierung 5
S Hibernate: Verschiedene Klassen zurückgeben. Datenbankprogrammierung 2
looparda Architektur für JPA Hibernate Umstieg Datenbankprogrammierung 14
O HSQLDB Hibernate Criteria Problem Datenbankprogrammierung 3
perlenfischer1984 Hibernate mit final members Datenbankprogrammierung 3
perlenfischer1984 Java Objecte speichern mit Hibernate ? Datenbankprogrammierung 2
N SQLite Hibernate und Aufruf von Funktion SELECT last_insert_rowid() Datenbankprogrammierung 2
N Sqlite3 und Hibernate Datenbankprogrammierung 3
A Hibernate Cache leeren Datenbankprogrammierung 4
I MySQL Hibernate zu viele Queries Datenbankprogrammierung 2
Psypsy Hibernate / JPA erkennen von schon gespeicherten Objekten Datenbankprogrammierung 4
Psypsy Hibernate / JPA OneToOne MappedBy Frage Datenbankprogrammierung 2
J Hibernate + DTOs - DTOs in DAOs verwenden? Datenbankprogrammierung 1
S Hibernate-Konfiguration : Unverständliche Ausgabe beim Ausführen Datenbankprogrammierung 0
I MySQL Hibernate / MySQL alias in WHERE clause Datenbankprogrammierung 1
J Hibernate + HSQL embedded Datenbankprogrammierung 2
P Hibernate Einstieg Datenbankprogrammierung 5
C Hibernate und createQuery Datenbankprogrammierung 2
V kennt jemand empfehlenswerte online tutorials zur Hibernate ? gerne auch englisch. Datenbankprogrammierung 4
G H2 Hibernate - wie joins machen Datenbankprogrammierung 1
D Hibernate: Zustand eines Objekts erkennen? Datenbankprogrammierung 0
D Unterschiede Hibernate Vs. Java Persistence API Datenbankprogrammierung 8
I Hibernate / JPA Index hinzufügen Datenbankprogrammierung 1
X Hibernate Cache Verständnisproblem Datenbankprogrammierung 0
T Hibernate und inner class Datenbankprogrammierung 0
K n:m Tabellen mit Hibernate erstellen Datenbankprogrammierung 1
T Hibernate DAO gute Tutorials/Bücher gesucht Datenbankprogrammierung 0
C Hibernate: could not resolve property Datenbankprogrammierung 1
J Plug-In-Framework für Hibernate-Klassen Datenbankprogrammierung 0
M Hibernate - Save Child wenn nötig Datenbankprogrammierung 10
M DAO's + Hibernate Theorie Datenbankprogrammierung 4
T Hibernate, HSQLDB und UNIQUE Datenbankprogrammierung 2
F Hibernate - verschiedene Schemen Datenbankprogrammierung 7
D Hibernate SaveOrUpdate Exception Datenbankprogrammierung 2
D Hibernate CreateQuery ohne Result Datenbankprogrammierung 7
E MySQL Hibernate mit JaxWS führt zu LazyInitialization Exception Datenbankprogrammierung 8
L Einarbeitung in Hibernate -> wenn gute SQL Kenntnisse vorhanden? Datenbankprogrammierung 2
B DB2 Hibernate findet Datenbank nicht Datenbankprogrammierung 18
K JPA / Hibernate Annotations Datenbankprogrammierung 4
M JPA / Hibernate mit Postgres DB Datenbankprogrammierung 3
P JSF + H2 + TomEE + Hibernate/JPA Datenbank wird nicht angelegt Datenbankprogrammierung 3
E MySQL Hibernate ( Anfänger ) Datenbankprogrammierung 3
P Lazy-Fetchig und Session-Problem mit Hibernate Datenbankprogrammierung 4
J Hibernate Select auf Parameterliste Datenbankprogrammierung 3
C Hibernate ManyToMany zusammengesetzter Primärschlüssel, problem. Datenbankprogrammierung 3
P Oracle Hibernate - Oracle-VarChar-Index wird nicht genutzt Datenbankprogrammierung 3
M Hibernate Foreign Key definieren Datenbankprogrammierung 4
M Abstrakte Klassen Hibernate Datenbankprogrammierung 4
D Mit Hibernate (mit Annotation) auf Views zugreifen Datenbankprogrammierung 2
M [Hibernate]Abgleich eines lokalen Objekts mit dem Zustand aus der Datenbank. Datenbankprogrammierung 3
P Mit Hibernate mehrere Datensätze löschen Datenbankprogrammierung 7
P Probleme mit meinem 1. Hibernate Beispiel Datenbankprogrammierung 3
P erste Schritte mit Hibernate Datenbankprogrammierung 3
V Hibernate Interfaces von anderem Projekt Datenbankprogrammierung 2
J MySQL Datenbank konfigurieren, JDBC, MySQL oder Hibernate Datenbankprogrammierung 2
B Hibernate und portierbare Datenbank Datenbankprogrammierung 3

Ähnliche Java Themen

Neue Themen


Oben