2012-03-10 11 views
1

に参加私はGWT、Hibernateとギレアデを使用していると私は、シリアル化の例外を取り除くしません:シリアル化の例外は声明

com.google.gwt.user.client.rpc.SerializationException: Type '[Ljava.lang.Object;' 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. 

私が原因Hibernateクエリー言語に参加をやっていますエラー:

List<UserEvent> userEvents = session.createQuery(
    "FROM UserEvent as userevent JOIN userevent.event as event WHERE userevent.user = ? AND userevent.status = 'JOIN' ORDER BY event.eventBegin ASC") 
    .setLong(0, user.getUserID()).setFirstResult(start).setMaxResults(maxResult).list(); 

クラスのコードは次のとおりです。

@Entity 
public class UserEvent extends LightEntity implements Serializable { 

    private static final long serialVersionUID = -291120580889352994L; 

    @Id 
    @ManyToOne 
    @JoinColumn(name = "user_userid") 
    private User user; 

    @Id 
    @ManyToOne 
    @JoinColumn(name = "event_eventid") 
    private Event event; 

    @Enumerated(EnumType.STRING) 
    private EventStatus status; 

    private Long time; 

    public UserEvent() { 

    } 



@Entity 
public class Event extends LightEntity implements Serializable { 

    private static final long serialVersionUID = -2504468186803850440L; 

    @Id 
    @GenericGenerator(name = "event_seq", strategy = "webapp.hibernate.EventSeq") 
    @GeneratedValue(generator = "event_seq") 
    private Long eventID; 

    private Long eventBegin; 

    public Event() { 

    } 

誰も自演んこれのための解決策にws?

答えて

0

あなたはここで見ている問題は、

query.list() 

呼び出しによってロードされるオブジェクトがUserEventsをロードしていないという事実にあります。 UserEventの動的プロキシをロードしています。 Hibernateは、プロキシオブジェクトを使用して、遅延ロードされた関連オブジェクトへの呼び出しを傍受します。

これに役立つライブラリがあります(EG http://www.jboss.org/errai)。

もう一つは、JPAエンティティをPOJOに変換してからシリアル化しようとすると、プロキシが途切れないようにする必要があります。