2013-09-29 53 views
1

我有2個與零的構造函數的實體,與@OneToMany關係序列化(如果我只使用一個實體沒有@OneToMany名單,每件事情都工作):GWT RPC SerializationException而實體使用名單@OneToMany

@Entity 
@Table(name = "directory") 
public class Directory implements Serializable { 
    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    private Long id; 

    private String documentName; 

    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER) 
    private List<DirectoryValues> dirValues; 

    public Directory() {} 
    ... 
    getters and setters 
    } 


@Entity 
@Table(name = "directoryvalues") 
public class DirectoryValues implements Serializable{ 
    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    private Long id; 
    private String value; 

    public DirectoryValues() {} 
    ... 
    getters and setters 

}

這個問題似乎當添加@OneToMany註解:

嚴重:異常而調度傳入RPC調用 com.google.gwt.user.client.rpc.SerializationException:類型「org.hibernate.collection .Persiste ntBag'未包含在可由此SerializationPolicy序列化的類型集中,或者其Class對象無法加載。爲了安全起見,這種類型不會被序列化:實例= []在com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serialize(ServerSerializationStreamWriter.java:619)

我的錯在哪裏在實體中列出?

+0

我相信當你有一對多的映射時,你應該使用'Set '。你可以試試嗎? – Churro

回答

0

正如philfr49暗示的那樣,GWT和Hibernate有時會有一些麻煩。它已被很好的記錄,你可以閱讀他發送的鏈接中的一些替代品。你既可以避免GWT-RPC,也可以避免休眠,或者努力使它們兼容。

我有一個GWT和Hibernate一起使用的項目;我使用數據傳輸對象,並使用Moo翻譯和更新域和DTO。有時候這有點痛苦,但我爲了讓工作變得更輕鬆而創建了Moo。還有其他類似的框架可供您使用(例如推土機等)

最終,決定如何最好地解決這個問題是您必須爲自己的項目制定的。