tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
2
ZUGRIFFE
733
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    LarsK LarsK ist offline Rookie
    Registriert seit
    Feb 2005
    Beiträge
    5
    Hallo ich habe eine kleine Frage vielleicht kann mir ja jemand sagen ob das was ich vorhabe Funktioniert oder nicht.

    Kleine Schilderung der Sachlage: Ich habe drei Tabellen einmal "Einträge", "Kategorien", "die Verknüpfung". Ein Eintrag aus der ersten Tabelle kann mehreren Kategorien zugeordnet werden, was in der verknüpfungstabelle gespeichert ist.

    Nun meine Frage wenn ich jetzt ein SELECT auf die Einträge mache, dann bekomme ich ja ein LocalObject der Einträge zurückgegeben, das ist soweit klar und auch gut. Über ein JOIN kann ich ja nun mir die Einträge und die dazugehörigen Kategorien anzeigen lassen. Problem dabei ist, dass das Object keine getter und setter Funktionen für die dazugeholten Felder besitzt, sodass ich die Daten nicht auslesen kann.

    Eine Möglichkeit wäre jetzt ich hole mir die Einträge aus der Datenbank anschließen die dazugehörigen Kategorien und bastel daraus ein neues Objekt welches, alle benötigen Daten besitzt. Das gefällt mir aber nicht wirklich gut, da ich ja fast identische Objekte erzeuge und alle Daten mittels get und set übernehmen muss. Das kostet irgendwie Performance, da ich jedes Objekt umschreiben muss.

    Schöner wäre es, wenn ich das gleich in das LocalObjekt mit einbauen könnte, sodass wenn ich auf das Datenbankobjekt zugreife, gleich ein Feld habe getKategorie und mir die Datenbank die Einträge liefert.
    Ich hab da irgendwie an eine selbstdefinierte Funktion auf der Datenbank, die dann mit einen Feld aus der Tabelle verknüpft ist, durch eine Abfrage des Feldes aufgerufen wird und das Ergebnis zurückliefert.

    Gruß

    Lars
     

  2. #2
    MadM MadM ist offline Mitglied Bronze
    Registriert seit
    Mar 2005
    Ort
    Darmstadt
    Beiträge
    39
    Hi Lars,

    das was du an dieser Stelle brauchst sind Container Managed Relationships (CMR).
    Diese definierst du im Deploment-Descriptor. Sie definieren die Beziehung und die Kardinalität zwischen deinen beiden Tabellen. Um deine Verknüfpungstabelle musst du dich dann "von Hand" gar nicht kümmern, da du die Kategorien direkt über die Einträge hinzufügen kannst. Außerem musst du deiner Bean Einträge eine Collection Kategorien hinzufügen.

    public abstract Collection getKategorien();
    public abstract void setKategorien(Collection kategorien);

    Näheres siehe
    http://java.sun.com/developer/techni...eans/EJB20CMP/
    http://www.javaworld.com/javaworld/j...-0419-cmp.html

    Wenn du die JBossIDE benutzt, gibt es dazu auch nen Wizard.

    Gruß
    MadM
    Geändert von MadM (23.03.06 um 08:35 Uhr)
     

  3. #3
    LarsK LarsK ist offline Rookie
    Registriert seit
    Feb 2005
    Beiträge
    5
    Hallo,

    danke für den Anstoss. Ich hatte schon CMR im Einsatz, allerdings nur als 1:n also als FK. Wusste nicht, das man die auch als m:n einsetzen kann. Naja ist ja auch noch recht Neuland für mich.
    Jetzt muss ich da nur noch irgendwie was mit den Transaction machen, wenn ich nämlich auf die Collection zugreife bekomme ich die Meldung "A CMR Collection may only be used within the transaction in which it was created".

    Gruß

    Lars
     

Ähnliche Themen

  1. Probleme mit ID bei Postgres/JSF
    Von StudentZHW im Forum Java
    Antworten: 3
    Letzter Beitrag: 05.04.08, 15:02
  2. Postgres problem!!
    Von ihd im Forum Relationale Datenbanksysteme
    Antworten: 0
    Letzter Beitrag: 28.09.07, 10:25
  3. Postgres SQL in VB.net?
    Von notebook20000 im Forum .NET Datenverwaltung
    Antworten: 7
    Letzter Beitrag: 17.03.06, 14:14
  4. POstgres SQL für VB.net
    Von notebook20000 im Forum Visual Basic 6.0
    Antworten: 1
    Letzter Beitrag: 13.03.06, 09:29
  5. Postgres und JAVA
    Von carsten_neumann im Forum Relationale Datenbanksysteme
    Antworten: 0
    Letzter Beitrag: 13.01.04, 00:46