我需要为我的应用程序启用Joda-Time-Hibernate支持。我使用applicatoinContext.xml和Annotations来配置Hibernate。
applicatoinContext.xml
...
<context:annotation-config/>
<tx:annotation-driven/>
...
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/default" />
<property name="username" value="root"/>
<property name="password" value="root"/>
</bean>
<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="packagesToScan" value="ee.test.mysql"></property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
</bean>
<bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager"
p:sessionFactory-ref="sessionFactory">
</bean>
</beans>
在哪里添加<property type="org.joda.time.contrib.hibernate.PersistentDateTime" name="dateTime"/>
?有没有办法从applicatioContext.xml
使用database.properties
,注释和获取数据库属性?
更新
我正在使用hibernate v4.2.2。使用Joda DateTime到datetime类型的mysql映射实体的最佳方法是什么?
UPDATE2
运行当前配置导致错误:
ERROR - Data truncation: Incorrect datetime value: '\xAC\xED\x00\x05sr\x00\x16org.joda.time.DateTime\xB8<xdj[\xDD\xF9\x02\x00\x00xr\x00\x1Forg.joda.time.base.BaseDateTime\xFF\xFF\x' for column 'date_time' at row 1
Exception in thread "main" org.hibernate.exception.DataException: could not execute statement
如果我的jodatime配置对于Hibernate 4是正确的那么问题出在哪里?为什么会出现Incorrect datetime value
错误?
UPDATE3:
我找到了各种各样的人。
主要方法:
product.setDate_time(new Timestamp((new DateTime(2014,11,11,15,0,0,0)).getMillis()));
并将我的实体更改为:
private Timestamp dateTimeStart;
没有额外的类型注释。我很好奇,为什么joda-hibernate和带有@Type注释的jadira在这个例子中没有用。