如何在Hibernate中映射String[]

7
你如何在Hibernate中映射以下类:
private class Book {
    private int id;
    private String title;
    private String[] chapterTitles;

    //Constructor, Getters and Setters
}

我已经在Hibernate中映射了集合和原始数组,但是如何使用String[]进行映射呢?我的Hibernate工具出现了'NullPointerException'错误,因此我无法生成映射。我已经搜索过了,但是没有找到任何解决方法。


这是一个Web服务,为JME客户端提供支持,使用Simple XML将对象序列化为XML。设备上的XML解析器由另一位开发人员编写,使用通用解析器来解析内容。将成员更改为集合会生成不同的XML元素类型,这将破坏JME应用程序的解析器。 - Ragunath Jawahar
通常情况下,在进行 XML/JSON 序列化时,数组和列表应该是可以互换的,不是吗? - Bozho
这是“标签”的名称将会更改。我必须对其他“模型”类进行更改,以使它们兼容,但我不喜欢这样做。 - Ragunath Jawahar
2个回答

8

我不知道如何使用注释来实现它,而且我个人认为这并不是一个好主意,你应该使用 List<String>,但是你可以使用xml映射来实现它。

你应该使用 <array>

<array name="chapterTytles" table="Titles">
    <key column="title_ID" />
    <index column="tytle_index" />
    <element column="tytle_name" type="string" />
</array>

1
嗨@danny,我已经尝试过了,但是我得到了以下异常:org.hibernate.MappingException:无法确定类型:String,在表格中:Titles,对于列:[org.hibernate.mapping.Column(title_ID)]。 - Ragunath Jawahar
请尝试使用小写字符串,但最好使用List<String> :) - danny.lesnik
当我使用“string”时,我会得到java.lang.ClassCastException:org.hibernate.type.StringType无法转换为org.hibernate.type.PrimitiveType。好的,我想我应该使用List<String>代替。您对List<String>有什么指针吗? - Ragunath Jawahar

5

嗨,@Sean,如果我使用List<String>怎么做呢? - Ragunath Jawahar
@RagunathJawahar,我以为你已经映射了集合?你的问题文本是这样说的。 - Sean Patrick Floyd
是的,我对于List<MyObjects>已经这样做了,但对于String还没有尝试过。没问题,我已经找到了一个解决方法。无论如何,谢谢你。 - Ragunath Jawahar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接