2016-04-13 6 views
0

私はUserType 3.2.0-GA、Hibernate 4.3.8を使用してAWS(RDS)の既存のmysqlインスタンスと通信しています。Hibernateがorg.joda.time.LocalDateの読み書きに失敗しました

私は、アプリケーションをHibernate 3.2.6とjoda-time-hibernate 1.1からアップグレードしようとしています。

失敗プロパティ:

<property name="birthdate" not-null="true" type="org.joda.time.LocalDate"/>

モデル:

import org.joda.time.LocalDate; 
... 
public LocalDate getBirthdate() { 
    return this.birthdate; 
} 

既存のデータを読み取ろうとするエラー:

org.hibernate.type.SerializationException: could not deserialize (Caused by: java.io.StreamCorruptedException: invalid stream header: 31393936) 
org.hibernate.internal.util.SerializationHelper.doDeserialize(SerializationHelper.java:262) 
org.hibernate.internal.util.SerializationHelper.deserialize(SerializationHelper.java:306) 
org.hibernate.type.descriptor.java.SerializableTypeDescriptor.fromBytes(SerializableTypeDescriptor.java:155) 
org.hibernate.type.descriptor.java.SerializableTypeDescriptor.wrap(SerializableTypeDescriptor.java:130) 
org.hibernate.type.descriptor.java.SerializableTypeDescriptor.wrap(SerializableTypeDescriptor.java:44) 
org.hibernate.type.descriptor.sql.VarbinaryTypeDescriptor$2.doExtract(VarbinaryTypeDescriptor.java:71) 
org.hibernate.type.descriptor.sql.BasicExtractor.extract(BasicExtractor.java:64) 
org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:267) 
org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:263) 
org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:253) 
org.hibernate.type.AbstractStandardBasicType.hydrate(AbstractStandardBasicType.java:338) 
... 
java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:804) 

新しいを作成しようと、エラーデータ:

WARN: SQL Error: 1292, SQLState: 22001 
Apr 12, 2016 5:12:07 PM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions 
ERROR: Data truncation: Incorrect date value: '��' for column 'birthdate' at row 1 
Apr 12, 2016 5:12:07 PM org.hibernate.engine.jdbc.spi.SqlExceptionHelper$StandardWarningHandler logWarning 
WARN: SQL Warning Code: 1292, SQLState: HY000 
Apr 12, 2016 5:12:07 PM org.hibernate.engine.jdbc.spi.SqlExceptionHelper$StandardWarningHandler logWarning 
WARN: Incorrect date value: '��' for column 'birthdate' at row 1 

org.springframework.dao.DataIntegrityViolationException: could not execute statement; SQL [n/a]; nested exception is org.hibernate.exception.DataException: could not execute statement

あなたが見ることができるように、私は物事を設定するには、春を使用しています。春に私の休止状態のプロパティは次のとおりです。

<bean id="hibernateProperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean"> 
    <property name="properties"> 
     <props> 
      <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</prop> 
      <prop key="hibernate.hbm2ddl.auto">update</prop> 
      <prop key="hibernate.generate_statistics">true</prop> 
      <prop key="hibernate.cache.region.factory_class">org.hibernate.cache.EhCacheRegionFactory</prop> 
      <prop key="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</prop> 
      <prop key="hibernate.cache.use_query_cache">true</prop> 
      <prop key="jadira.usertype.autoRegisterUserTypes">true</prop> 
     </props> 
    </property> 
</bean> 
+0

また、私は、usertypeにそのようなことをさせるために、型がないものとしてプロパティを設定しようとしました: ''しかし、 –

+0

Joda + Hibernateはそのままでは動作しません。 [こちら](http://www.joda.org/joda-time-hibernate/userguide.html)と[this](http://stackoverflow.com/questions/8974747/hibernate-4-and-joda-時間)。 – dambros

+0

はい、私はこれまで、joda-time-hibernate 1.1を統合に使用していたのですが、2番目のリンクごとに3.22にアップグレードしました。 –

答えて

1

は、私はそれがタイプを設定することで動作するようになったが判明:

<property name="birthdate" not-null="true" type="org.jadira.usertype.dateandtime.joda.PersistentLocalDate"/>

この作品、あるいは必要な理由残念ながら、私は理解していません。詳細な説明は素晴らしいでしょう。

関連する問題