2016-07-25 11 views
1

Nachdem ich die Dokumentation von GORM durchgelaufen bin, habe ich herausgefunden, wie man Eins-zu-Eins-Beziehungen zwischen Objekten erstellt. Ich habe jedoch nicht herausgefunden, wie ich meine gewünschte Beziehung ermöglichen kann. Die Beziehung, die ich erstellen möchte, fungiert als Eins-zu-Eins-Verknüpfung, behält aber die vorherigen Zeileneinträge für historische Zwecke bei.GORM-Eins-zu-Eins-Beziehung unter Beibehaltung bestehender Einträge

Zum Beispiel kann ein Auto während seiner Lebensdauer mehrere Besitzer haben. Wie kann ich angeben, dass der aktuellste Eintrag in der Owners-Tabelle für eine bestimmte Car ID korrekt ist?

Antwort

3

Es gibt viele verschiedene Möglichkeiten, dies zu modellieren. IMO, einer der flexibelsten Ansätze ist:

class User { 
    String name 
    static hasMany = [ownerships: Ownership] 
} 

class Car { 
    String name 
    static hasMany = [ownerships: Ownership] 
} 

class Ownership { 
    Date start 
    Date end 
    static belongsTo = [owner: User, car: Car] 
} 

Zum Beispiel, wenn Ann an Bob ihr Auto verkauft, wir die Endzeit von Anns Ownership Rekord zum Zeitpunkt des Verkaufs festgelegt und eine neue Ownership Datensatz speichern für Bob mit der Startzeit auf den Zeitpunkt des Verkaufs eingestellt.

Wenn der aktuelle Besitzer eines Autos bekommen ist eine Operation, müssen wir häufig durchführen, könnten wir eine currentOwner Methode Car

class Car { 
    String name 
    static hasMany = [ownerships: Ownership] 

    Ownership currentOwner() { 
    // depending on how this method is used, you might want to 
    // return the User instead of the Ownership 
    Ownership.findByEndIsNullAndCar(this) 
    } 
} 
hinzufügen
Verwandte Themen