GWT JPA – 响应无法反序列化

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

无法对响应进行反序列化,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 groups; private List 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 getGroups() { return this.groups; } public void setGroups(List groups) { this.groups = groups; } //bi-directional many-to-one association to Module @OneToMany(mappedBy="course", fetch=FetchType.LAZY) public List getModules() { return this.modules; } public void setModules(List modules) { this.modules = modules; } } 
  • 如果我删除它的关系它工作没问题。 这样做是因为像列表,集合等的集合被转换为GWT客户端无法处理的hibernate对象。

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

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

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

我使用了吉利德并解决了这个问题。

请查看相应的post: GWT with JPA

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