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
フィールドまたはゲッターにのみアノテーションを設定することをお勧めします。私は畑が好きですが、それは私の好みです。
Hibernateでのフィールドおよびプロパティアクセスの奇妙なケース を参照してください。
したがって、注釈をフィールドのみまたはゲッター(プロパティ)のみに配置します。それらを混合して@Accessを使用しないと、異常な動作が発生します。
次に、シリアル化がアプリケーションの一部である場合は、ツールを使用してより優れたserialVersionUIDを生成することをお勧めします。
Joda時間の任意のフィールドの上に注釈を付けることができます。
@Temporal(TemporalType.DATE)
@Type(type = "org.jadira.usertype.dateandtime.joda.PersistentLocalDate")
私は同じ間違いに出会いましたが、最後に、関係にエラーがないことがわかりました。リレーションにエラーがないと思われる場合は、インポートを確認してください。他のフィールドのインポートが間違っている可能性があります。たとえば私のコードではimport Java.security.Timestamp
間違ったインポートをインポートに変更したときに、アイデアによって自動的にインポートJava.sql.Timestamp
;エラーはなくなりました。
些細なことかもしれませんが、Eclipse JBoss Hibernateプラグインなどのツールを使用してEntityクラスを生成した場合、varchar
フィールドのタイプをStringではなくSerializable
として設定することに注意してください。
実行時にorg.hibernate.type.SerializationException: could not deserialize
私はそのような愚かな詳細のために多くの時間を失いました。
Number
の代わりにInteger
型の永続クラス属性があったときにこれに遭遇しました