2014-09-22 4 views
0

При десериализации as3 объекта в java. GraniteDS бросить эту Exeption:error deserialisation graniteds amf object

java.lang.ClassNotFoundException: org.hibernate.collection.PersistentSet 

Я думаю, некоторые зависимости должны были в pom.xml. есть идеи ?

ответ

0

GraniteDS ничего не знает о спящем/любых походах, кроме примитивных типов и коллекций при сериализации/десериализации. Итак, в вашем случае, хотя библиотека находится на месте org.hibernate.collection.PersistentSet Гранит не ищет ее.

Решение:

Создание копии объектов Hibernate для использования Int graniteDS, поэтому будет иметь одну версию для отправки AMF объектов и другой дело с Hibernate. Кроме того, хорошей практикой является наличие двух копий .

+0

Извините, я не понял, что вы предложили. что вы подразумеваете под созданием разных копий? –

+0

@SamiJmii Значение, не используйте объекты спящего режима для отправки данных в пользовательский интерфейс. Если у вас есть объект Person в Hibernate, создайте другой объект с именем Person в другом пакете, но с теми же свойствами и используйте этот объект для отправки в пользовательский интерфейс. – Zeus

+0

ОК, но этот throwble (classe not found) возникает, когда я отправляю данные с гибкого клиента на сервер. это происходит как-то при десериализации данных «человека» в соответствующий тип java. у моих персональных данных даже нет каких-либо данных сбора только примитивных типов. –

0

После отладки, кажется graniteDS (версия: 3.1.0.GA) предлагает этот класс как externalizer

org.granite.hibernate.HibernateExternalizer 

которым зависит от зависимостей Hibernate:

import org.hibernate.collection.PersistentCollection; 
import org.hibernate.collection.PersistentList; 
import org.hibernate.collection.PersistentMap; 
import org.hibernate.collection.PersistentSet; 
import org.hibernate.collection.PersistentSortedMap; 
import org.hibernate.collection.PersistentSortedSet; 

эти зависимости исправны в версиях спящего режима (3.X). но пакет имена больше не Валида в спящем режиме 4:

import org.hibernate.collection.internal.PersistentBag; 
import org.hibernate.collection.internal.PersistentList; 
import org.hibernate.collection.internal.PersistentMap; 
import org.hibernate.collection.internal.PersistentSet; 
import org.hibernate.collection.internal.PersistentSortedMap; 
import org.hibernate.collection.internal.PersistentSortedSet; 

как работа вокруг: мы могли бы определить нашу Owen externalizer с той же реализацией HibernateExternalizer и изменением импорта. то мы используем этот пользовательский эквалайзер в granite-config.xml.

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

Смежные вопросы