2013-03-19 50 views
0

包含HashMap(使用ElementCollection註釋)的實體將使用Eclipse Link/JPA持久化。獲取HashMap

通過下面的JPQL查詢的HashMap現在應該retrivied:

SELECT t.myMap FROM myEntity t WHERE t.id = :id" 

不幸的是,結果是沒有地圖了,但字符串列表它們是(只)HashMap中的值。

如何將HashMap作爲單個結果獲得?

任何幫助表示讚賞。

回答

0

你不能。你所要求的不是實體中的集合,而是來自連接的元素。你可能得到的最好的結果是查詢實體並使用它的getMyMap()獲得你之後的集合

+0

不幸的是,這個方法在實體中不存在 - 對於myEntity對象的用戶來說應該是不可能的直接訪問地圖。如果我想添加這樣一種方法,我必須把它提供給公衆。有沒有其他方式獲得收藏的內容? – user1056903 2013-03-20 13:16:22

+0

在JPA中,您必須從關係中獲取每個項目並自行構建地圖。 EclipseLink確實允許設置一個ContainerPolicy類型用於查詢,但是它僅僅定義了getResultList或者getResultCollection,它們都不能返回一個Map,因此您需要使用本地EclipseLink api執行查詢。 – Chris 2013-03-20 16:04:52

+0

你能舉一個例子說明如何使用本地的EclipseLink api嗎? – user1056903 2013-03-20 16:47:04