2012-05-03 66 views
0

,當我在我的服務器端查詢休眠創建更改列表對象休眠回報

(em.getEntityManagerFactory().createEntityManager().createNativeQuery("select...")) 

形式的一些對象,包括Java列表 休眠回報org.hibernate.collection.PersistentList

現在,當我嘗試發送這個對象我java客戶端他不知道這

org.hibernate.collection.PersistentList 

對象,當我嘗試反序列化(並且我不想將此hibernate.jar添加到客戶端)。

有沒有辦法讓hibernate返回普通的java列表? 現在我把每個查詢都替換成普通的java列表或java Arraylist ,然後我把這個對象發送到客戶端。 (Json不是一個選項)。

在此先感謝。

回答

0

通常hibernate對象是不可序列化的。如果您想將它們發送給客戶端,則必須將其數據複製到數據持有者對象中(或者可以爲客戶端使用特殊的軟件包)。這不僅是列表實現的情況,也是單個pojos的情況,並且延遲加載通常也不會在客戶端工作。

您已經在以正確的方式進行操作,將列表中的元素複製到客戶端的新列表中。與從數據庫讀取數據所需的時間相比,這隻需要很少的時間。如果是GWT,here你可以找到一個很好的hibernate集成文檔,但是可能你沒有使用GWT,因爲GWT有很多hibernate整合的障礙比只有PersistentList更大。)