| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java EE (J2EE) и Spring > GWT+Hibernate проблема с сериализацией |
| Автор: _sten_ 29.5.2008, 17:04 | ||
Есть клиент организован на GWT. Делаю так: по запросу клиента выгружаю с базы сущность, и асинхронно передаю клиенту:
вобщем в таком виде не работаєт, никакого эксепшина не выдает, просто не выполняется асинхронный метод на клиенте. Проблема скорей всего в сериализации потому, что если вернуть не user а us (как в даном примере) то все ок. Получается что надо клонировать сущности выгруженые хибернетом и только тогда сериализировать... Как быть? |
| Автор: Yauhen 31.7.2008, 13:26 | ||
| Если ты делал маппинг при помощи аннотейшнс или использовал в бинах generics, то бины конечно сериализовываться не будут. Тогда тебе их придется продублировать для клиентской стороны (без аннотейшнов и дженериков). пример можно посмотреть здесь http://www.rbgrn.net/blog/2007/11/using-hibernate-with-google-web-toolkit-gwt.html. но в этом примере плохо реализована конвертация серверных бинов в клиенсткие. Здесь http://gwt-spring-hibernate-reference.googlecode.com/svn/trunk/GWT_Spring_Hibernate_Sample/server_src/org/gwtspringhibernate/reference/rlogman/server/GeneralHelper.java можно взять нормальный универсальный код для конвертации, который использует рефлексию. Если ты в бинах не использовал ни аннотейшнов ни дженериков. то бины, в которых есть Set-ы для организации связей, тоже сериализовываться не будут, т.к. без использования дженериков Hibernate возвращает не просто Set-ы, а org.hibernate.collection.PersistentSet, которые GWT сериализовывать не хочет. Для решения этой проблемы нужно org.hibernate.collection.PersistentSet конвертить в HashSet-ы. Для этого йа написал такой код:
|