java - Hibernate 初始化期间 Joda 类型 def 加载失败

标签 java hibernate spring jodatime

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/

相关文章:

java - 在 Java 中,对于字符串 x,s.length() 的运行时成本是多少?是 O(1) 还是 O(n)?

java - 实体惰性方法和 Dimetra 法

java - 通过 Java 运行 cmd 命令

sql - 查询 : The value of a host variable in the EXECUTE or OPEN statement is too large for its corresponding use 时出错

java - 如何使用 entityManager 在 JPA 中启动事务

java - 如何根据结果内部对象对 mongo 聚合查询进行排序

java - maven型材还是 Spring 型材?

Java 到 JavaScript 的通信

hibernate - 如何通过 Wicket JPA/Hibernate 集成(使用 Spring)摆脱 LazyInitializationException

java - 按需实例化 Spring beans,而不是在启动时实例化