Grails: Domänenklassenzuordnung (Sammlung von Benutzertypen im Ruhezustand)

Ich frage mich, ob es möglich ist, das folgende Domain-Modell zu implementieren.

Lassen Sie uns eine Domain-Klasse haben, die eine Reihe von Intervallen enthält (Joda-Zeit). Ich kann den Benutzertyp org.joda.time.contrib.hibernate.PersistentInterval für die Zuordnung von Intervall zu Datenbanktabelle verwenden (auf ähnliche Weise wie inhttp: //www.grails.org/JodaTime+Plugi). Ich kann jedoch nicht herausfinden, wie die Zuordnung implementiert werden soll, wenn ich mehrere Intervalle festgelegt habe, nicht nur ein Intervall.

Beispiel

class Activity {  
   ...    
   Set intervals = []  
   ...  
   static hasMany = [    
       intervals: org.joda.time.Interval  
   ]  

   // This is incorrect implementation, I have set of intervals  
   // and this would be correct if I had only one interval  
   // How to implement mapping in this case?  
   static mapping = {  
       intervals type: PersistentInterval, {  
           column name: "start"  
           column name: "end"  
       }  
   }  

}

Implementierung oben schlägt mit folgendem Fehler fehl:

2010-10-23 18: 30: 25,483 [main] ERROR context.GrailsContextLoader - Fehler beim Ausführen der Bootstraps: Fehler beim Erstellen der Bean mit dem Namen 'messageSource': Initialisierung der Bean fehlgeschlagen; verschachtelte Ausnahme ist org.springframework.beans.factory.BeanCreationException: Fehler beim Erstellen der Bean mit dem Namen 'transactionManager': Der Verweis auf die Bean 'sessionFactory' kann beim Festlegen der Bean-Eigenschaft 'sessionFactory' nicht aufgelöst werden. verschachtelte Ausnahme ist org.springframework.beans.factory.BeanCreationException: Fehler beim Erstellen der Bean mit dem Namen 'sessionFactory': Aufruf der init-Methode fehlgeschlagen; verschachtelte Ausnahme ist org.hibernate.MappingException: Fremdschlüssel (FK4FDC5B1E5107CA0: activity_intervals [start, end])) muss dieselbe Anzahl von Spalten aufweisen wie der referenzierte Primärschlüssel (activity [id]) org.springframework.beans.factory.BeanCreationException: Error Erstellen einer Bean mit dem Namen 'messageSource': Initialisierung der Bean fehlgeschlagen; verschachtelte Ausnahme ist org.springframework.beans.factory.BeanCreationException: Fehler beim Erstellen der Bean mit dem Namen 'transactionManager': Der Verweis auf die Bean 'sessionFactory' kann beim Festlegen der Bean-Eigenschaft 'sessionFactory' nicht aufgelöst werden. verschachtelte Ausnahme ist org.springframework.beans.factory.BeanCreationException: Fehler beim Erstellen der Bean mit dem Namen 'sessionFactory': Aufruf der init-Methode fehlgeschlagen; verschachtelte Ausnahme ist org.hibernate.MappingException: Fremdschlüssel (FK4FDC5B1E5107CA0: activity_intervals [start, end]) muss dieselbe Anzahl von Spalten aufweisen wie der referenzierte Primärschlüssel (activity [id]) unter org.grails.tomcat.TomcatServer.start ( TomcatServer.groovy: 212)

Ich dachte, dass die Umgehung dieses Problems darin besteht, das Intervall zu extrahieren, um das Intervall für die Erweiterung der Domänenklasse zu trennen und die Zuordnung darin anzugeben. Intervall ist jedoch die letzte Klasse, so dass eine Verlängerung nicht möglich ist.

Vielen Dank für Ihre Ratschläge.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage