| 

.NET C# Java Javascript Exception

Mapping many-to-one mit jointable

Dies ist das Archiv des ehemaligen Forums zum Thema Groovy, Grails, Griffon und Bean Scripting Framework, welches unter groovy-forum.de existierte. Die neue Adresse des Groovy-Forums ist: http://codekicker.de/fragen/themen/groovy.


Mapping many-to-one mit jointable

koeberle - 25.05.2010 14:33
Wie muss ich für ein Bidirektionales Many-To-One mein mapping konfigurieren wenn ich mit einem Join-Table arbeite. Für die One-To-Many-Seite finde ich ein Lösung:
class Employee {
    static hasMany = [projects: Project]
    static mapping = { 
        projects joinTable: [name: 'EMP_PROJ', column: 'PROJECT_ID', key: 'EMPLOYEE_ID'] 
    }
}

class Project { }

Aber wie sieht es denn für die Many-To-One-Seite aus?

Christian


Re: Mapping many-to-one mit jointable

koeberle - 25.05.2010 15:47
Ja das hatte ich schon ausprobiert und das wir mal ganz sauber ignoriert. Nach ein bisschen Recherche bin ich soweit zu glauben, dass das grails nicht unterstützt (lasse mich aber gerne eines besseren belehren), da es aus Sicht von grails erst mal kein Sinn macht. Wenn es bidirektional ist, ist es ja meist so das eine Seite (Tabelle) eine Fremdschlüssel auf die andere Seite hat. In unserem Fall geht das aber nicht so einfach, da wir keine NULL-Werte in unserer Datenbank dulden, die Beziehung zwischen den beiden Seiten aber erst später (oder gar nicht) aufgebaut wird.

Christian


Re: Mapping many-to-one mit jointable

mpuhlmann - 25.05.2010 17:55
Hallo Christian,

ich seh eigentlich nur zwei mögliche Lösungen für dein Problem:

1. Umstellung auf many-to-many

Hierbei gibts ja zwangsläufig ne Join-Table. Zusätzlich musst du dann in deiner Project Domainklasse mit Methoden wie getEmployee/setEmployee das gewünschte Verhalten - also eigentlich nur ein zugeordneter Employee - simulieren.

2. One-To-Many in Employee Klasse + Zugriffsmethoden in Project Klasse

In der Project Klasse müssten dann ebenfalls Methoden für den Zugriff auf den zugeordneten Employee implementiert werden. Der Getter würde dann etwa den Employee suchen, welcher das aktuelle Project in seiner Liste hat, während der Setter das Project zum übergebenen Employee hinzufügt.

Ich persönlich würde Variante 2 bevorzugen, da hier das Datenmodell den tatsächlichen Anforderungen entspricht. Nur die Bi-Direktionalität wird nicht im Modell direkt abgebildet sondern zusätzlich implementiert. Grundsätzlich stellt sich mir auch die Frage, ob die Bi-Direktionalität wirklich notwendig ist?

Gruss

Marco


Re: Mapping many-to-one mit jointable

koeberle - 26.05.2010 09:01
Ich habe das jetzt mit Many-To-Many gelöst, war einfach der geringste Aufwand.
Bidirektional ist wirklich nötig da Querys sonst immer um drei Ecken gemacht werden müssen.

Christian


Stelle deine Groovy-Frage jetzt!


Diese Seite zeigt den Thread "Mapping many-to-one mit jointable" der ehemaligen Webseite groovy-forum.de, welche durch einen Serverunfall zerstört wurde. codekicker.de hat viele Konversationen über die beliebte Programmiersprache Groovy und zugehörige Frameworks wie das Grails-Framework retten können.

Hast Du eine Frage zum Thema Groovy, Grails oder allgemein Java? Viele ehemalige groovy-forum.de Mitglieder beantworten dir auf codekicker.de deine Frage! Stelle jetzt eine Frage!

Viele weitere Diskussionen zu Grails und Groovy befinden sich auf der Threadübersicht des alten groovy-forum.de.