価格としてインデックスデータの値が一貫していないことがわかっている場合は、<array>
としてマップしてください(すべての商品でインデックスが常に0から始まり、インデックスの穴や商品の重複はありません)。
(そして、より良いdecimal
type instead of double
にあなたの価格を切り替える。)
<class name="Product">
<id name="Id" generator="..." />
<array name="Prices" table="Price">
<key column="ProductId" />
<index column="Order"/>
<element type="decimal" length="19" precision="4">
<column name="Price" />
</element>
</array>
</class>
あなたはFelice's answerで書かれたとしても、代わりにリストを使用しますが、その後、IList<decimal>
としてあなたの財産を入力することがあります。
primitive-array
については、ちょっと気にする必要はありません。これは、Java Hibernateから継承されたマッピングであり、C#では関連しない概念、プリミティブに対応しています。
これはおそらくPaco's commentの意味でしたが、私は最初に理解していませんでした。これにより確認されたようですNH issue。
DB内のインデックスの一貫性を保証できない場合(常に0から始まり、同じ製品のインデックスや重複したインデックスがある可能性があります...)、価格をマッピングするためにモデルを変更する必要があります。<set>
子エンティティ(ISet<Price> Prices
)の索引を使用して、独自のコードで処理します。 (set
マッピングのorder-by="Order"
属性でデータを読み込む際の注文部分が処理される可能性があります)
商品の重複価格は、異なるインデックスを扱うためにDB内の別個の行になります。したがって、bag
ではなくset
を使用するように勧めました。なぜなら、重複した価格は確かに異なるエンティティになるからです。
私は、理論プログラミングで実際の意味を持つタグ 'primtive'を削除します。 –
削除済み、ありがとう –
プリミティブ= java。 C#でそれは違いはありません – Paco