私は2台のマシンを持っています:
A) Windows XP、JDK 1.7.45 B) Windows Server 2003、JDK 1.7.45
In Machine AI は、オブジェクトをファイル システムとその子に正常にシリアル化し、逆シリアル化して戻すことができます。
マシン B で逆シリアル化すると、子オブジェクトが見つかりません。どの段階でも例外はスローされません。
シリアル化されたファイルを A から B にコピーすると、B での逆シリアル化によって子オブジェクトが正常に作成されます。
これは、B でのシリアル化の問題を示しています。
この問題は、非常に単純なオブジェクトでは発生しません。しかし、JPA でアノテーションを付けたオブジェクトを使用すると、問題が発生します。
@Entity
@Table(name="...")
@NamedQuery(name="Category.findAll", query="SELECT c FROM Category c")
public class Category implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(name="...")
private long id;
@Transient
private List<Category> subCategories; //These go missing
...
}
この問題は、特定の JPA エンティティ クラスでのみ発生しますが、すべての JPA エンティティ クラスでは発生しません。
何がこれを引き起こしているのでしょうか?JPAエンティティは問題なくシリアル化できますか? 最終的な目標は、JPA エンティティを Couchbase にキャッシュすることです。これは A では機能しますが、B では失敗します。ここで説明するように、単純なディスク ベースのシリアル化でも B では問題があります。