Joda 时间与 hibernate 支持结合使用。配置如下:
org.joda.time.package-info.java中有 typedef:
@org.hibernate.annotations.TypeDefs({
@org.hibernate.annotations.TypeDef(
name="localDate",
typeClass =
org.joda.time.contrib.hibernate.PersistentLocalDate.class
)
})
package org.joda.time;
有一个带有 session 工厂配置的 spring 上下文:
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="packagesToScan">
<list>
<value>org.joda.time</value>
</list>
</property>
<property name="annotatedClasses">
<list>
<value>...</value>
...
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</prop>
<prop key="hibernate.query.substitutions">true 1, false 0, yes 'Y', no 'N'</prop>
<prop key="hibernate.show_sql">false</prop>
<prop key="hibernate.format_sql">true</prop>
</props>
</property>
<property name="dataSource" ref="dataSource"/>
</bean>
然后是测试用例:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration({"classpath:spring-test.xml"})
@Transactional
public class OperatorDaoTest extends AbstractTransactionalJUnit4SpringContextTests {
//autowired dao field defined
...
@Test
public void testMethod(){
//calls DAO method
}
}
问题出在下一个异常中:
Caused by: org.hibernate.MappingException: Could not determine type for: localDate, at table: TABLE_NAME, for columns: [org.hibernate.mapping.Column(DATE_COLUMN)]
最佳答案
我使用标准日期映射到数据库,然后在我的 getter/setter 中使用 joda-time 并执行转换,以避免像您遇到的问题。 This may be of use 。
关于java - Hibernate 初始化期间 Joda 类型 def 加载失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8258002/