Grails: mapeamento de classe de domínio (coleção de tipos de usuário de hibernação)

Gostaria de saber se é possível implementar o seguinte modelo de domínio.

Vamos ter uma classe de domínio que contém um conjunto de intervalos (tempo de joda). Posso usar o tipo de usuário de hibernação org.joda.time.contrib.hibernate.PersistentInterval para mapeamento de Intervalo para a tabela do banco de dados (de maneira semelhante a emhttp://www.grails.org/JodaTime+Plugin) No entanto, não consigo descobrir como implementar o mapeamento se tiver definido um intervalo, não apenas um intervalo.

Exemplo:

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

}

A implementação acima falha com o seguinte erro:

23-10-2010 18: 30: 25,483 [principal] Contexto do ERRO.GrailsContextLoader - Erro ao executar autoinicialização: Erro ao criar bean com o nome 'messageSource': Falha na inicialização do bean; a exceção aninhada é org.springframework.beans.factory.BeanCreationException: Erro ao criar o bean com o nome 'transactionManager': Não é possível resolver a referência ao bean 'sessionFactory' enquanto define a propriedade do bean 'sessionFactory'; a exceção aninhada é org.springframework.beans.factory.BeanCreationException: Erro ao criar bean com o nome 'sessionFactory': Falha na invocação do método init; a exceção aninhada é org.hibernate.MappingException: chave estrangeira (FK4FDC5B1E5107CA0: activity_intervals [start, end]))) deve ter o mesmo número de colunas que a chave primária referenciada (atividade [id]) org.springframework.beans.factory.BeanCreationException: erro criando bean com o nome 'messageSource': falha na inicialização do bean; a exceção aninhada é org.springframework.beans.factory.BeanCreationException: Erro ao criar o bean com o nome 'transactionManager': Não é possível resolver a referência ao bean 'sessionFactory' enquanto define a propriedade do bean 'sessionFactory'; a exceção aninhada é org.springframework.beans.factory.BeanCreationException: Erro ao criar bean com o nome 'sessionFactory': Falha na invocação do método init; a exceção aninhada é org.hibernate.MappingException: chave estrangeira (FK4FDC5B1E5107CA0: activity_intervals [start, end]))) deve ter o mesmo número de colunas que a chave primária referenciada (atividade [id]) em org.grails.tomcat.TomcatServer.start ( TomcatServer.groovy: 212)

Eu pensei que a solução alternativa desse problema é extrair o intervalo para separar a classe de domínio que estende o intervalo e especificar o mapeamento dentro dele. No entanto, o intervalo é a classe final, portanto, a extensão não é possível.

Obrigado por seus conselhos.

questionAnswers(1)

yourAnswerToTheQuestion