Hibernate GORM:如何将间隔映射到列?

Hibernate GORM:如何将间隔映射到列?,hibernate,grails,gorm,jodatime,Hibernate,Grails,Gorm,Jodatime,我有一个类似于下面使用JodaTime的Interval类的类。Joda Time Grails插件不支持开箱即用的Interval字段,因此我尝试基于它自己映射它 我的问题是我得到了以下异常 Caused by: java.lang.RuntimeException: Cannot treat multi-column property as a single-column property at org.springsource.loaded.ri.ReflectiveInterce

我有一个类似于下面使用JodaTime的Interval类的类。Joda Time Grails插件不支持开箱即用的Interval字段,因此我尝试基于它自己映射它

我的问题是我得到了以下异常

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

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

我没有一个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的优良特性。。。但目前可能是一个有效的解决方案。

实体上的开始日期时间和结束日期时间是否为实际字段?否。开始日期时间和结束日期时间是表上的列,但不是Java对象上的字段。使用此设置,它们会自动映射到间隔开始和结束。如果我们想坚持使用GORM,而不处理JPA,这是
@Columns
@Type
的来源,该怎么办?@Jackie这是为了解决OP的问题,使用vanilla JEE而不是GORM。我不知道问题的真正解决方案是否已经确定。你能提供我仍然遇到编译错误的类的包名吗。出于某种原因,它不喜欢用逗号将两者分开。看到这个,我想知道它是否能帮助您:
@Columns(columns = { @Column(name = "start_date_time"), @Column(name = "end_date_time") })
@Type(type = "org.jadira.usertype.dateandtime.joda.PersistentInterval")
private Interval time;