GWT JPA - 响应无法反序列化

时间:2011-04-05 14:33:55

标签: java gwt jpa

我使用GWT和JPA来保持持久性。我已经创建了一个域JPA enchanted类,DAO和RPC用于它们之间的通信。一切正常,通过RPC客户端将对象发送到服务器但无法得到响应。服务器无法以与客户端兼容的方式反序列化。所以我不能使用服务器callBack回到客户端。异常消息是:

  

答案不可能   反序列化,   com.google.gwt.user.client.rpc.SerializationException

以下是我的一个课程的示例代码:

@Entity
@Table(name="course")
public class Course implements Serializable {
    private static final long serialVersionUID = 1L;
    private int courseId;
    private String name;
    private List<Group> groups;
    private List<Module> modules;

    public Course() {
    }


    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    @Column(unique=true, nullable=false)
    public int getCourseId() {
        return this.courseId;
    }

    public void setCourseId(int courseId) {
        this.courseId = courseId;
    }


    @Column(nullable=false, length=100)
    public String getName() {
        return this.name;
    }

    public void setName(String name) {
        this.name = name;
    }


    //bi-directional many-to-one association to Group
    @OneToMany(mappedBy="course", fetch=FetchType.LAZY)
    public List<Group> getGroups() {
        return this.groups;
    }

    public void setGroups(List<Group> groups) {
        this.groups = groups;
    }


    //bi-directional many-to-one association to Module
    @OneToMany(mappedBy="course", fetch=FetchType.LAZY)
    public List<Module> getModules() {
        return this.modules;
    }

    public void setModules(List<Module> modules) {
        this.modules = modules;
    }

}
  • 如果我删除关系,它的工作没问题。这样做是因为像lists,set的e.t.c这样的集合被转换为GWT客户端无法处理的hibernate对象。

5 个答案:

答案 0 :(得分:1)

问题是我的班级与另一个班级的@OneToMany关联。如果我删除该关联它工作没问题。但这是不可能的,因为我使用了规范化的关系数据库

答案 1 :(得分:0)

如果您正在使用GWT-RPC,请确保您尝试序列化的所有类都具有公共默认(无参数)构造函数并实现Serializable。如果你有嵌入式类,它们也必须有一个无参数的构造函数。

答案 2 :(得分:0)

有一次,我为this question准备了gwt-jpa样本。它只是JPA实体的序列化..它可能会给你一个关于你的情况有什么问题的线索..

答案 3 :(得分:0)

我使用Gilead并解决了问题。

请查看相应的帖子:GWT with JPA

答案 4 :(得分:0)

让它工作......再次重新部署战争后...奇怪......不能指向一个具体的事情(因为我确实清除了浏览器缓存/ eclipse类输出/重启eclipse) 显然,解决方法似乎是在发生此问题时尝试重新部署webapp。