在休眠初始化期间Joda类型def加载失败初始化
问题描述:
使用Joda时间与hibernate支持配对。配置如下:在休眠初始化期间Joda类型def加载失败初始化
有类型定义在org.joda.time.package-info.java:
@org.hibernate.annotations.TypeDefs({
@org.hibernate.annotations.TypeDef(
name="localDate",
typeClass =
org.joda.time.contrib.hibernate.PersistentLocalDate.class
)
})
package org.joda.time;
有与会话工厂配置弹簧背景:
<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)]
Thanx的答案,但遵循你的建议涉及太多的努力,它更容易使用一个不同的解决方法,如添加类型定义属性会话工厂。 –
在我看来,这是一个薄弱的解决方法,并不能真正解决手头的问题。 – rtcarlson
@rtcarlson感谢评论/投票,也许你可以建议一个较弱的答案? – NimChimpsky