2016-07-12 76 views
0

我試圖使用Hibernate XML映射文件來映射字符串列表。我的階級是這樣的:如何使用Hibernate XML文件映射字符串列表

public class Historic { 
    private String id; 
    private String resolution; 
    private List<String> names; 
    private List<Score> scores; 
    private String base; 
    private List<Grade> grades; 
} 

我,我應該使用<element>標籤的文檔中讀取,但我不知道我要如何從Historic類引用的特定屬性。

我認爲它可能是這樣的:

<class name="Historic" table="HISTORIC"> 
    <id name="id" column="id"> 
     <generator class="native" /> 
    </id> 

    <property name="resolution" type="string" column="resolution" /> 

    <element 
     name="names" 
     column="names" 
     type="string" 
    /> 

    ... 

</class> 

是嗎?

+0

你不能直接在單個表中完成,需要首先映射到其他表。 –

+0

你可以做到這一點,但這不是一個好習慣。 –

回答

0

假設你有兩張桌子(父母和子女) 你應該做這樣的事情 - >在你的情況下,對於成績,分數等,你應該定義另一張桌子。

這裏是XML映射的休眠

<class name="Parent" table="Parent"> 
    <id name="parentId" column="id" type="integer" /> <!-- TODO: specify generator --> 
    <property name="parentName" type="string" column="name" /> 
    <bag name="childs" table="Children" inverse="true"> 
    <key column="parent_id" /> 
    <one-to-many class="Child" /> 
    </bag> 
</class> 

<class name="Child" table="Children"> 
    <id name="childId" column="id" type="integer" /> <!-- TODO: specify generator --> 
    <property name="childName" type="string" column="name" /> 
    <many-to-one name="parent" column="parent_id" not-null="true"/> 
</class> 

一個例子,但對於列表,您可以使用@ElementCollection annotation了。 這樣的:

@ElementCollection 
@CollectionTable(name="Nicknames", [email protected](name="user_id")) 
@Column(name="nickname") // nickname is the name of String field. 
public List<String> getNicknames() { ... } 

,以獲取有關收集更多的信息:http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html/collections.html#collections-ofvalues

我希望這可以幫助你。

+0

在上面的映射中,每個父節點都有一個或多個子節點,但每個子節點只有一個父節點。 –

1
You can write it as 
<list name="names" table="names" > 
<key column="name_id"></key> 
<index column="seq"></index> 
<element column="names" type="string"></element> 
</list> 

For further details take a look at https://achieversnitin.wordpress.com/2016/12/06/hibernate-collection-mapping-list/ 
相關問題