2012-11-25 43 views
0

類具有Maps鍵位映射的是序列化的,但將返回錯誤

public class Page { 
    private Map<LocaleWrapper, String> titles; 
    private Map<LocaleWrapper, String> texts; 

    (...) 
} 

Key類

public class LocaleWrapper implements Serializable { 
    private Locale locale; 

    //Constructor, getter, setter 
} 

我的IDE拋出一個錯誤:

Basic attributes can only be of the following types: (...), or any Serializable type.

爲什麼我的IDE拋出這個錯誤,我該如何解決我的映射問題? 在此先感謝。

+0

請填寫完整的錯誤。並且指定你想要做什麼? –

+0

這不是在運行時,但我試圖做的是映射不同語言環境的標題和文本。這樣我可以顯示正確的標題和文本,具體取決於用戶的區域設置。 – Aquillo

+0

那麼,至少告訴你的IDE在哪裏給你這個錯誤?什麼是確切的錯誤信息。沒有更多的信息,很難說出什麼地方出了問題。 –

回答

1

顯示此錯誤AFAIK,因爲該屬性位於JPA實體內部,而不僅僅是一個簡單的類。

而映射是不可序列化的。

您是否真的想將整個映射保存爲序列化的字節數組,在BLOB列中?如果是這樣,請選擇一個可序列化的類型,如HashMap。如果沒有,那麼地圖需要定義實體和/或嵌入類型之間的某種形式的關聯,我首先會考慮如何將信息存儲在數據庫中,並將數據庫模式映射到實體。

+0

你說得對。我正在使用JPA實體,但不會認爲這是它造成的。這是否意味着我無法處理實體內的任何地圖?我應該爲此使用自定義類嗎? – Aquillo

+0

查看我對答案的編輯。 –

+0

謝謝你的回答。 「你真的想保存整張地圖嗎?」你是否建議我最好不要保存整張地圖?如果是這樣,是否有更好的解決方案來保存多個標題和文本,具體取決於「Locale」的權限?注意。我試圖避免使用屬性,因爲文本可能會通過我的CMS進行編輯。 – Aquillo

相關問題