1

私は3つのクラス、推奨事項、判断、ユーザーを持っています。関係は次のとおりです。1つの推奨事項には複数の判断がある場合があり、1人のユーザーには複数の判断がある場合があります(異なる推奨事項で)。ここに私のJPAクラスがあります:

クラス推薦

@Entity
@Table(name = "RECOMMENDATIONS")
public class Recommendation implements Serializable, Cloneable {
...

@OneToMany(cascade = {CascadeType.REFRESH, CascadeType.DETACH }, fetch = FetchType.EAGER, mappedBy="recommendation", targetEntity=Judgement.class)
private Set<Judgement> judgements;

    ...
    public Recommendation() {
        super();
        this.judgements = new LinkedHashSet<Judgement>();
    }
   ...
}

クラス ユーザー:

@Table(name = "USERS", uniqueConstraints = @UniqueConstraint(columnNames = "email"))
public class User implements Serializable, Cloneable {
...
    @OneToMany(mappedBy="judge", targetEntity=Judgement.class, cascade = { CascadeType.REFRESH, CascadeType.DETACH }, fetch = FetchType.EAGER)
    private Set<Judgement> judgements;
...
    public User() {
        super();
        this.judgements = new LinkedHashSet<Judgement>();
    }

...
}

クラス判定:

@Entity
@Table(name = "JUDGEMENTS")
public class Judgement implements Serializable, Cloneable {
    @ManyToOne(cascade = { CascadeType.REFRESH, CascadeType.DETACH})
    @JoinColumn(name = "id")
    private Recommendation recommendation;

    @ManyToOne(cascade = { CascadeType.REFRESH, CascadeType.DETACH})
    @JoinColumn(name = "user_id")
    private User judge;
...
    public Judgement() {
        super();
    }
...
}

データベースには、次のテーブルがあります。ユーザーの推奨事項。判断;

ユーザーにはいくつかのデータがあり、推奨にはいくつかのデータがありますが、アプリケーションをロードすると次の例外が発生しました:

com.google.gwt.user.client.rpc.SerializationException: Type 'org.hibernate.collection.PersistentSet' was not included in the set of types which can be serialized by this SerializationPolicy or its Class object could not be loaded. For security purposes, this type will not be serialized.: instance = []

推奨レコードの判定フィールドをロードするときに判明したコードをデバッグしましたが、インスタンス化できません。助けてください!

4

1 に答える 1

2

Hibernate によってロードされるデータベース エンティティを含むオブジェクトは、シリアライズできません。結果として、それらは gwt リモート プロシージャ コールの転送オブジェクトとして使用できません。

最も簡単な解決策は、エンティティ インスタンス (この場合は Recommendation、Judgment、および User のインスタンス) からすべてのコンテンツを単純なデータ ホルダー オブジェクトにコピーし、ホルダー オブジェクトをリモート プロシージャ コールのパラメーターとして使用することです。良い解決策である小さなプロジェクトの場合。大規模なプロジェクトの場合は、Gilead ライブラリの使用を検討できます。その場合、遅延読み込みの恩恵を受けることさえできます。

Google は、 Hibernate の GWT への統合に関する優れたドキュメントを提供しています。

于 2012-05-09T07:48:01.127 に答える