GWT JPA - Ответ не может быть десериализован - PullRequest
2 голосов
/ 05 апреля 2011

Я использую 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.

Ответы [ 5 ]

1 голос
/ 06 апреля 2011

Ну, проблема в том, что у моего класса есть связь @OneToMany с другим классом.Если я уберу ассоциацию, все будет хорошо.Но это невозможно, так как я использую нормализованную реляционную базу данных

0 голосов
/ 03 июня 2011

заработало ... после повторного развертывания войны ... странно ... не могу указать на одну конкретную вещь (как я очистил вывод в кеше / затмении классов браузера / перезапустить затмение) Похоже, что обходной путь - попытаться повторно развернуть веб-приложение при возникновении этой проблемы.

0 голосов
/ 18 апреля 2011

Я использовал Gilead , и это решило проблему.

Пожалуйста, проверьте соответствующий пост: GWT с JPA

0 голосов
/ 05 апреля 2011

Однажды я подготовил образец gwt-jpa для этого вопроса . Это всего лишь сериализация JPA-сущности. Это может дать вам представление о том, что не так в вашем случае.

0 голосов
/ 05 апреля 2011

Если вы используете GWT-RPC, убедитесь, что все классы, которые вы пытаетесь сериализовать, имеют открытый конструктор по умолчанию (без аргументов) и реализует Serializable. Если у вас есть встроенные классы, у них также должен быть конструктор без аргументов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...