【问题标题】:GWT RPC SerializationException while using List of Entities @OneToMany使用实体列表时出现 GWT RPC SerializationException @OneToMany
【发布时间】:2013-10-05 07:48:36
【问题描述】:

我有 2 个可序列化的零构造函数实体,具有 @OneToMany 关系(如果我只使用一个没有 @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.PersistentBag”未包含在可由此 SerializationPolicy 序列化的类型集中,或者无法加载其 Class 对象。出于安全考虑,此类型不会被序列化。: instance = [] at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serialize(ServerSerializationStreamWriter.java:619)

我的实体列表有什么问题?

【问题讨论】:

  • 我相信当你有一个一对多的映射时,你应该使用Set&lt;DirectoryValues&gt;。你可以试试吗?

标签: gwt serialization gwt-rpc


【解决方案1】:

您必须使用数据传输对象 (DTO),请阅读:http://www.gwtproject.org/articles/using_gwt_with_hibernate.html,尤其是“为什么当 Hibernate 对象到达浏览器世界时无法理解”部分。或者使用 RequestFactory (http://www.gwtproject.org/doc/latest/DevGuideRequestFactory.html) 代替 GWT-RPC。

【讨论】:

    【解决方案2】:

    正如 philfr49 所暗示的那样,GWT 和 Hibernate 有时在协同工作时会遇到一些麻烦。它已被详细记录,您可以在他发送的链接中阅读一些替代方案。您可以避免 GWT-RPC、避免 Hibernate,或者更加努力地使它们兼容。

    我有一个项目同时使用 GWT 和 Hibernate;我使用数据传输对象,并使用Moo 翻译和更新域和DTO。有时这有点痛苦,但我构建 Moo 的部分原因是为了让这项工作更容易。您还可以使用其他类似的框架(例如 Dozer 等)

    最终,决定如何最好地解决这个问题是您必须为自己的项目制定的。

    【讨论】:

      猜你喜欢
      • 2012-07-21
      • 2017-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-11
      相关资源
      最近更新 更多