0

私は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 では問題があります。

4

2 に答える 2

1

これがあなたのためのツールです:

EclipseLink MOXy は、JAXB (JSR-222) 仕様の実装です。EclipseLinkもJPA実装を提供するため、その拡張機能の多くはJPAエンティティのマッピングを目的としています:

双方向の関係をサポートするための @XmlInverseReference (参照: http://blog.bdoughan.com/2010/07/jpa-entities-to-xml-bidirectional.html )

埋め込み ID をマッピングするための @XmlPath (参照: http://blog.bdoughan.com/2010/07/xpath-based-mapping.html )。

キー/外部キーでマップする必要がある場合は、@XmlJoinNodes (JPA の @JoinColumns に似ています)。

于 2013-10-21T21:01:33.233 に答える