2011-09-26 54 views
6

你會如何映射在Hibernate中下面的類:如何映射一個String []休眠

private class Book { 
    private int id; 
    private String title; 
    private String[] chapterTitles; 

    //Constructor, Getters and Setters 
} 

我已經在Hibernate中映射的集合和基本數組,但我怎麼用字符串[做]?我的hibernate工具因'NullPointerException'而停止,因此我無法生成映射。我用google搜索了一下但找不到。

+0

爲什麼不使用一個列表? – Bozho

+0

這是一個JME客戶端的Webservice,它使用Simple XML將對象序列化爲XML。另一位開發人員編寫的設備上的XML解析器使用通用解析器來解析內容。將成員更改爲Collection將生成一個不同的XML元素類型,這會破壞JME應用程序的解析器。 –

+0

會嗎?正常情況下,一個數組和一個列表在涉及到xml/json序列化時應該是可以互換的 – Bozho

回答

7

我不知道如何用註釋和個人做到這一點,我不認爲這是好主意,你應該使用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:無法確定類型爲:字符串,在表:標題,爲列:[org.hibernate.mapping.Column(title_ID)] –

+0

請使用小寫字母,但最好使用列表 :) –

+0

當我使用'字符串'我得到java.lang.ClassCastException:org.hibernate .type.StringType不能轉換爲org.hibernate.type.PrimitiveType。好的,我認爲我應該使用列表。列表也有指針嗎? –

5

你可以做到creating a custom value type,雖然我個人更喜歡改變你的設計並使用List來代替。

+0

Hi @Sean,如果我使用列表來代替,我該怎麼做? –

+0

@RagunathJawahar我雖然你已經映射集合?你的問題文字是這樣說的。 –

+0

是的,我爲列表做了這個,但還沒有嘗試過。沒有問題,我已經找到了解決辦法。無論如何,謝謝你。 –