【发布时间】:2011-04-05 14:33:54
【问题描述】:
我使用 GWT 和 JPA 来实现持久性。我创建了一个域 JPA 魔法类、DAO 和 RPC 用于它们之间的通信。一切正常,通过 RPC 客户端将对象发送到服务器但无法获得响应。服务器无法以与客户端兼容的方式反序列化。所以我不能使用服务器回调回客户端。异常消息是这样的:
无法响应 反序列化, 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;
}
}
- 如果我删除关系它工作正常。这样做是因为列表、集合等集合被转换为 GWT 客户端无法处理的休眠对象。
【问题讨论】:
-
注意hibernate返回什么样的List。在您的吸气剂上,您可以尝试明确说明列表的类型 - 例如返回一个
ArrayList,并在方法体中返回一个new ArrayList<Type>(existingList);