使用GORM保留LocalDate列表

时间:2013-03-19 17:29:41

标签: grails gorm jodatime

我正在尝试在grails中保留joda 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属性,但也没有工作(只是没有添加任何东西)

2 个答案:

答案 0 :(得分: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'
    }

答案 1 :(得分:0)

如何使用localDate将'fechas'定义为另一个域并创建hasmany关系:

类似的东西:

/Evento.groovy

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

/Fecha.groovy

import org.joda.time.LocalDate

class Fecha  {

    LocalDate date

}