2012-11-25 42 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

相关问题