Grails: сопоставление классов домена (коллекция пользовательских типов в спящем режиме)

Мне интересно, если возможно реализовать следующую модель предметной области.

Давайте иметь класс домена, который содержит множество интервалов (время йода). Я могу использовать org.joda.time.contrib.hibernate.PersistentInterval тип пользователя hibernate для отображения Interval в таблицу базы данных (аналогично тому, как вhttp://www.grails.org/JodaTime+Plugin). Однако я не могу понять, как реализовать отображение, если у меня есть набор интервалов, а не только один интервал.

Пример:

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"  
       }  
   }  

}

Реализация выше терпит неудачу со следующей ошибкой:

2010-10-23 18: 30: 25,483 [main] ОШИБКА context.GrailsContextLoader - Ошибка при выполнении начальной загрузки: Ошибка при создании компонента с именем 'messageSource': Ошибка инициализации компонента; вложенное исключение: org.springframework.beans.factory.BeanCreationException: ошибка при создании компонента с именем'actionManager ': невозможно разрешить ссылку на компонент' sessionFactory 'при установке свойства компонента' sessionFactory '; вложенное исключение - org.springframework.beans.factory.BeanCreationException: ошибка при создании компонента с именем 'sessionFactory': сбой вызова метода init; вложенное исключение: org.hibernate.MappingException: внешний ключ (FK4FDC5B1E5107CA0: activity_intervals [start, end])) должен иметь такое же количество столбцов, что и первичный ключ, на который имеется ссылка (action [id]) org.springframework.beans.factory.BeanCreationException: ошибка создание компонента с именем 'messageSource': не удалось инициализировать компонент; вложенное исключение: org.springframework.beans.factory.BeanCreationException: ошибка при создании компонента с именем'actionManager ': невозможно разрешить ссылку на компонент' sessionFactory 'при установке свойства компонента' sessionFactory '; вложенное исключение - org.springframework.beans.factory.BeanCreationException: ошибка при создании компонента с именем 'sessionFactory': сбой вызова метода init; вложенным исключением является org.hibernate.MappingException: внешний ключ (FK4FDC5B1E5107CA0: activity_intervals [start, end])) должен иметь то же количество столбцов, что и первичный ключ, на который есть ссылка (action [id]), в org.grails.tomcat.TomcatServer.start ( TomcatServer.groovy: 212)

Я подумал, что обойти эту проблему можно, чтобы извлечь Interval в отдельный класс домена, расширяющий Interval, и указать в нем отображение. Тем не менее, Interval является конечным классом, поэтому расширение невозможно

Спасибо за ваши советы.

Ответы на вопрос(1)

Ваш ответ на вопрос