Hallo,
ich habe folgende Tabellen mit der ReverseEngineering Funktion des Hibernate Database Explorers (MyEclipseIDE6)in mein Java Projekt integriert:
-----------
|Tabelle A|
-----------
|PK:idA |
| |
-----------
|
| 1:n
v
-----------
|Tabelle B|
-----------
|PK:idB |
|FK:fkA |
-----------
|
| 1:n
v
-----------
|Tabelle C|
-----------
|PK:idC |
|FK:fkB |
-----------
Nun möchte ich mit den erstellten Klassen alle Tupel der Relation C erhalten die eine indirekte Fremdschlüsselbeziehung über die Tabelle B mit dem PK:idA=5 haben (in SQL: SELECT C.idC FROM A, B, C WHERE C.fkB=B.idB AND B.fkA=A.idA AND A.idA=5
Wie bekomme ich das mit den erstellten DAO Klassen vom Reverse Engineering gelöst?
Ich habe einen Ansatz, der mir aber zu kompliziert scheint, da ich mir die Daten selbst in einer Liste zusammenstückeln muss. Hier mal Prinzipiell der Ansatz:
PS: Bitte nicht auf Richtigkeit prüfen, da ich den Code nicht getestet habe
Wie geht das einfacher?
ich habe folgende Tabellen mit der ReverseEngineering Funktion des Hibernate Database Explorers (MyEclipseIDE6)in mein Java Projekt integriert:
-----------
|Tabelle A|
-----------
|PK:idA |
| |
-----------
|
| 1:n
v
-----------
|Tabelle B|
-----------
|PK:idB |
|FK:fkA |
-----------
|
| 1:n
v
-----------
|Tabelle C|
-----------
|PK:idC |
|FK:fkB |
-----------
Nun möchte ich mit den erstellten Klassen alle Tupel der Relation C erhalten die eine indirekte Fremdschlüsselbeziehung über die Tabelle B mit dem PK:idA=5 haben (in SQL: SELECT C.idC FROM A, B, C WHERE C.fkB=B.idB AND B.fkA=A.idA AND A.idA=5
Wie bekomme ich das mit den erstellten DAO Klassen vom Reverse Engineering gelöst?
Ich habe einen Ansatz, der mir aber zu kompliziert scheint, da ich mir die Daten selbst in einer Liste zusammenstückeln muss. Hier mal Prinzipiell der Ansatz:
Code:
Transaction tx = HibernateSessionFactory.getSession().beginTransaction();
A a_instance = (new ADAO()).findById(5);
List b = (new BDAO()).findByfkA(a_instance.getIDA());
Iterator it = b.iterator();
List sammlung = new ArrayList();
while(it.hasNext()){
B b_instance = (B) it.next();
List c = (new CDAO()).findByfkB(b_instance.getIDB());
Iterator c_it = c.iterator();
while(c_it.hasNext()){
C c_instance = (C)c_it.next();
//Fülle sammlung Hier mit den Daten!
}
}
tx.commit();
PS: Bitte nicht auf Richtigkeit prüfen, da ich den Code nicht getestet habe
Wie geht das einfacher?