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