將as3對象反序列化爲java時。 GraniteDS拋出這個Exeption:錯誤反序列化graniteds amf對象
java.lang.ClassNotFoundException: org.hibernate.collection.PersistentSet
我認爲一些依賴項應該在pom.xml中。有任何想法嗎 ?
將as3對象反序列化爲java時。 GraniteDS拋出這個Exeption:錯誤反序列化graniteds amf對象
java.lang.ClassNotFoundException: org.hibernate.collection.PersistentSet
我認爲一些依賴項應該在pom.xml中。有任何想法嗎 ?
GraniteDS在序列化/反序列化時,除了原始類型和集合外,並不知道有關hibernate /任何pojos的任何信息。所以,就你的情況而言,即使圖書館已經到位org.hibernate.collection.PersistentSet
花崗岩並不尋找它。
解決方案:
使用INT GraniteDS的創建休眠對象的副本,讓你 將有一個版本用於發送AMF對象和另一個 處理休眠。此外,有兩個 副本是一個好習慣。
調試後,這似乎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;
這些依賴都OK在休眠版本(3.X)。但是包命名空間不再的Valide休眠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;
的解決方法:我們可以定義我們的歐文externalizer具有相同的實現HibernateExternalizer,改變進口。那麼我們在granite-config.xml中使用這個自定義外部化器。
希望graniteDS可以從外部依賴關係中解耦出來,這可能會導致重大更改,如下所示。
對不起,我不明白你的建議。通過創建不同的副本,你的意思是什麼? – 2014-09-22 22:10:11
@SamiJmii含義,請勿使用hibernate對象將數據發送到UI。如果在Hibernate中有Person對象,則在另一個包中創建另一個名爲Person的對象,但具有相同的屬性,並使用此對象發送到UI。 – Zeus 2014-09-22 23:04:40
好的,但是當我從flex客戶端發送數據到服務器時發生這種throwble(類未找到)。它在將我的'人員'數據反序列化爲相應的java類型時會以某種方式發生。我的個人數據甚至沒有任何收集數據只是原始類型。 – 2014-09-22 23:16:22