2013-03-19 28 views
0

我试图在grails中保留joda LocalDate的列表。我现在所拥有的是这样的:使用GORM保留LocalDate的列表

package com.publidirecta 

import org.joda.time.LocalDate 

class Evento { 

    List <LocalDate> fechas = [] 

    static hasMany = [fechas:LocalDate] 
} 

,我得到以下错误:

MappingException: Missing type or column for column[fechas_persistent_local_date] on domain[Evento] referencing[org.jadira.usertype.dateandtime.joda.PersistentLocalDate] 
->> 334 | innerRun in java.util.concurrent.FutureTask$Sync 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
| 166 | run  in java.util.concurrent.FutureTask 
| 1110 | runWorker in java.util.concurrent.ThreadPoolExecutor 
| 603 | run  in java.util.concurrent.ThreadPoolExecutor$Worker 
^ 722 | run . . . in java.lang.Thread 

我出的hasMany属性尝试过,但不工作或者(只是didnt添加任何东西)

回答

0

如何定义你的“fechas”与另一LOCALDATE域和创造的hasMany关系:

是这样的:

/Evento.groovy

class Evento { 
static hasMany = [fechas: Fecha] 
} 

/Fecha.groovy

import org.joda.time.LocalDate 

class Fecha { 

    LocalDate date 

} 
+0

这是我第二次选项,但我发现它太杂乱,增加了一个额外的领域类无线只有一个属性 – user1485182 2013-03-20 10:46:47

1

由于Alidad建议你应该换行与LOCALDATE一个新的实体,与这个实体的一对多的关系。 此外,您将不得不负责将LocalDate类型映射到数据库,因为这不是Hibernate本身支持的类型。看看这个涵盖主题的guide

使用User Type库类应该是这个样子:

package com.publidirecta 

class Evento { 

    static hasMany = [fechas: Fecha] 

    List <Fecha> fechas = [] 
} 

而且

import org.jadira.usertype.dateandtime.joda.PersistentLocalDate 
import org.joda.time.LocalDate 

class Fecha { 
    LocalDate date 

    static mapping = { 
     date type: PersistentLocalDate 
    } 
} 

确保您的以下内容添加到您的BuildConfig

dependencies { 
     compile 'org.jadira.usertype:usertype.jodatime:1.9' 
    } 
+0

嗨,谢谢你的快速回答。我试过你的解决方案,但没有发生任何事该错误消失了,但LocalDate不坚持在数据库 – user1485182 2013-03-20 09:52:32

+0

我修复了我的答案。习惯于思考MongoDB的方式而不是关系数据库的方式。 – 2013-03-20 14:11:12