11

Hibernate で 2 つのテーブルを使用していますが、特定のクエリでこの問題が発生する理由がわかりません。誰かが問題を認識してくれることを願っています。

テーブルユーザーがいます

@Entity
@Table(name="user")
public class User implements Serializable {
private static final long serialVersionUID = 1L;
private Long idUser;
private Area area;

//...other get and setter

@OneToOne(fetch=FetchType.EAGER)
@JoinColumn(name="idarea")
public Area getArea() {
return area;
}
}

そしてテーブルエリア

@Entity
@Table(name = "area")
public class Area implements Serializable {
private static final long serialVersionUID = 1L;

@Id @GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="idarea")
private Long idArea;

@Column(name="area_name")
private String areaName;

@Column(name="time_start")
private LocalTime timeStart;

//...other get and setter

}

ログ 言う:

15:27:28,140  INFO DefaultLoadEventListener:160 - Error performing load command
org.hibernate.type.SerializationException: could not deserialize
at org.hibernate.util.SerializationHelper.doDeserialize(SerializationHelper.java:262)
at org.hibernate.util.SerializationHelper.deserialize(SerializationHelper.java:306)
at org.hibernate.type.descriptor.java.SerializableTypeDescriptor.fromBytes(SerializableTypeDescriptor.java:130)
at org.hibernate.type.descriptor.java.SerializableTypeDescriptor.wrap(SerializableTypeDescriptor.java:116)
at 
....//other lines
org.springframework.orm.hibernate3.HibernateSystemException: could not deserialize; nested exception is org.hibernate.type.SerializationException: could not deserialize
4

5 に答える 5

8

joda 時間の任意のフィールドの上に簡単に注釈を付けることができます。

   @Temporal(TemporalType.DATE)
   @Type(type = "org.jadira.usertype.dateandtime.joda.PersistentLocalDate")
于 2013-07-30T13:17:18.417 に答える
7

フィールドまたはゲッターにのみ注釈を設定することをお勧めします。私は畑が好きですが、それは私の好みです。

Hibernate でのフィールドとプロパティへのアクセスの奇妙なケースを参照してください。

したがって、注釈をフィールドのみに配置するか、ゲッター (プロパティ) のみに配置します。それらを混在させて @Access を使用しないと、異常な動作が発生します。

次に、シリアル化がアプリケーションの一部である場合は、ツールを使用してより良い serialVersionUID を生成することをお勧めします。

于 2012-11-07T09:16:24.477 に答える
2

些細な意見かもしれませんが、Eclipse JBoss Hibernate プラグインなどのツールを使用して Entity クラスを生成した場合は、varcharフィールドのタイプSerializableが String ではなく設定されることに注意してください。

実行時に取得しますorg.hibernate.type.SerializationException: could not deserialize

私はそのようなばかげた詳細のために多くの時間を失いました.

于 2016-12-01T15:55:50.983 に答える