我使用JPA - Hibernate 2.1和Joda DateTime。对于DateTime转换,我使用org.jadira.usertype来使用Hibernate。这对于使用H2内存数据库的开发和本地测试都很好。但是在我们的Jenkins服务器上,测试总是因一些奇怪的SQLExceptions而失败。
WARN o.h.e.jdbc.spi.SqlExceptionHelper - SQL Error: 90003, SQLState: 90003
ERROR o.h.e.jdbc.spi.SqlExceptionHelper - Hexadecimal string with odd number of characters: "2015-01-22 14:15:52.965"; SQL statement:
和
WARN o.h.e.jdbc.spi.SqlExceptionHelper - SQL Error: 90004, SQLState: 90004
ERROR o.h.e.jdbc.spi.SqlExceptionHelper - Hexadecimal string contains non-hex character: "2015-01-22 14:15:52.98"; SQL statement:
很难找出为什么它在我的笔记本电脑上而不是在服务器上工作。唯一的区别是服务器在Ubuntu VM上运行而且我使用的是Windows 8.1 - 我是否需要考虑像OpenJDK可能导致问题?或者这是一个知道的H2 DB问题 - 但我能找到任何东西吗? 知道为什么以及我能做些什么来解决它?
谢谢!
导致问题的字段:
@DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME)//tried to remove this without success
private DateTime lastSeen;
persistence.xml - JPA属性。
<property name="jpaProperties">
<props>
<prop key="hibernate.hbm2ddl.auto">create-drop</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.dialect">org.hibernate.dialect.H2Dialect</prop>
<prop key="hibernate.connection.CharSet">utf-8</prop>
<prop key="hibernate.connection.characterEncoding">utf-8</prop>
<prop key="hibernate.connection.useUnicode">true</prop>
<prop key="hibernate.hbm2ddl.import_files">test-import.sql</prop>
<prop key="jadira.usertype.autoRegisterUserTypes">true</prop>
</props>
</property>
答案 0 :(得分:6)
我认为您错过了@Column
和@Type
注释:
@Type(type="org.jadira.usertype.dateandtime.joda.PersistentDateTime")
@DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME)
private DateTime lastSeen;