我有一个类似于下面一个使用JodaTime的Interval类的类。 Joda Time Grails插件不支持开箱即用的Interval字段,因此我尝试根据Rob's suggestion how to persist DateTimeTZ自行映射。
import org.jadira.usertype.dateandtime.joda.PersistentInterval
import org.joda.time.Interval
class Offer {
Interval time
static mapping = {
time type: PersistentInterval, {
column name: "start_date_time"
column name: "end_date_time"
}
}
}
我的问题是我得到以下异常。
Caused by: java.lang.RuntimeException: Cannot treat multi-column property as a single-column property
at org.springsource.loaded.ri.ReflectiveInterceptor.jlrConstructorNewInstance(ReflectiveInterceptor.java:991)
at org.hibernate.cfg.Configuration.buildMappings(Configuration.java:1375)
at org.springframework.orm.hibernate3.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:717)
at org.springframework.orm.hibernate3.AbstractSessionFactoryBean.afterPropertiesSet(AbstractSessionFactoryBean.java:188)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1514)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1452)
... 111 more
有人知道如何正确映射间隔吗?
答案 0 :(得分:1)
我没有Grails应用程序可以试用它,但这适用于我的基于J2EE的应用程序:
@Columns(columns = { @Column(name = "start_date_time"), @Column(name = "end_date_time") })
@Type(type = "org.jadira.usertype.dateandtime.joda.PersistentInterval")
private Interval time;
显然,它没有使用Groovy和GORM的优点......但暂时可能是一个有效的解决方案。