2011-01-22 8 views
1

私が永続化する必要がある奇妙な状況があります。この文字列の配列を保持するのがベストだろうどのようなマッピングとテーブル構造エンティティのstring []にnhibernateマッピングが使用されていますか?

public class Person 
{ 
    public string[] Nicknames { get; set; } 
} 

を?

+0

興味がある場合は、ニックネーム文字列を配列として保持する必要があります。私はリストやセットを使用することはできません。 –

+0

データベースにはどのように格納されていますか?別のテーブルまたは区切られた文字列として –

+0

別の表にあります。 –

答えて

3

あなたは直接の配列をマッピングすることができますが、いくつかの追加の列が必要となります:

<!-- can live w/o orderby --> 
<array name="Nicknames" table="Nicknames" order-by="indexColumn ASC"> 
    <key column="keyColumn"/> 
    <index column="indexColumn"/> <!-- position in array --> 
    <element column="nickname" type="String"/> 
</array> 

あなたが必要な他の列を持っていない場合、私はおそらく通常のバッグやリストとしてそれを持続しますエンティティ内の配列として配列として公開します。

+0

なぜプリミティブ配列ですか? –

+0

私はプリミティブ配列のマッピングに精通していませんが、インデックスの列を必要としないようにしますか? – AlexCuse

+0

このリンクから:http://www.intertech.com/Blog/post/Hibernates-Primitive-Array.aspx、あなたの例とプリミティブ配列の違いは、それが注文を必要としないということです属性。 –

2

あなたは同じことを正しく達成するためにあなたのロジックを使用することができます。ニックネーム間に独自の区切り文字を追加し、メモリに読み込んだ後、この区切り文字で区切ります。

public class Person 
{ 
    public string Nicknames { private get; set; } 

    public string[] ArrayOfNicknames 
    { 
    get 
    { 
     return Nicknames.Split(<your_delimiter>); 
    } 
    } 
} 
関連する問題