2012-03-10 28 views
1

我使用GWT,Hibernate和Gilead公司,我不擺脫序列的異常:系列化異常連接語句

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查詢語言這會導致在JOIN錯誤:

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() { 

    } 

是否有人硝酸鉀這是一個解決方案?

回答

0

你在這裏看到的問題是由於這樣的事實,即得到由

query.list() 

調用加載的對象沒有加載UserEvents。它正在加載UserEvent的動態代理。 Hibernate使用代理對象來攔截對延遲加載的相關對象的調用。

有些圖書館可以幫助解決這個問題(EG http://www.jboss.org/errai)。

你可以做的另一件事是在嘗試序列化它們之前將你的JPA實體轉換爲POJO,這應該確保代理不會妨礙它。