java - GWT JPA: la respuesta no pudo ser deserializada
(5)
Si está utilizando GWT-RPC, asegúrese de que todas las clases que intenta serializar tengan un constructor público predeterminado (sin argumento) e implemente Serializable
. Si tiene clases integradas, también debe tener un constructor sin argumentos.
Yo uso GWT y JPA para persistencia. He creado un dominio JPA encantado de clases, DAO y RPC para la comunicación entre ellos. Todo funciona bien, a través de RPC el cliente envía el objeto al servidor pero no pudo obtener respuesta. El servidor no puede deserializar de una manera compatible con el lado del cliente. Así que no puedo usar la llamada al servidor Volver al cliente. El mensaje de excepción es este:
La respuesta no se pudo deserializar, com.google.gwt.user.client.rpc.SerializationException
Aquí hay un código de muestra de una de mis clases:
@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;
}
}
- Si elimino las relaciones, funciona bien. Esto se hace porque las colecciones como listas, conjuntos, etc. se convierten en objetos de hibernación que GWT no puede manejar.
Bueno, el problema es que mi clase tiene una asociación @OneToMany con otra clase. Si elimino la asociación, funciona bien. Pero es imposible, ya que uso una base de datos relacional normalizada
funcionó ... después de un redespliegue de la guerra otra vez ... extraño ... un punto específico (como hice claro las clases de ecualización / eclipse del navegador de salida / reinicio del eclipse) Aparentemente, la solución parece ser volver a implementar la aplicación cuando este problema ocurre..
Una vez, he preparado una muestra de gwt-jpa para esta pregunta . Es solo la serialización de la entidad JPA. Puede darte una pista sobre lo que está mal en tu caso.
Usé Gilead y solucionó el problema.
Por favor, consulte la publicación correspondiente: GWT con JPA