2

我有一个类似于以下使用 JodaTime 的 Interval 类的类。Joda Time Grails 插件不支持开箱即用的 Interval 字段,因此我尝试根据Rob 的建议如何坚持 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

有人知道如何正确映射间隔吗?

4

1 回答 1

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 的优点......但暂时可能是一个可行的解决方案。

于 2013-09-30T20:16:53.567 回答