2

簡潔にするために簡略化した、これに似たテーブル構造があります

CREATE TABLE Parent (
  ParentId NUMBER NOT NULL,
  CONSTRAINT ParentId_PK PRIMARY KEY ParentId
);

CREATE TABLE Attribute (
  ParentId NUMBER NOT NULL,
  Key NVARCHAR2(200) NOT NULL,
  Value NVARCHAR2(4000) NOT NULL,
  CONSTRAINT Attribute_PK PRIMARY KEY (ParentId, Key),
  CONSTRAINT ParentId_FK FOREIGN KEY (ParentId)
      REFERENCES Parent (ParentId)
);

子のキーと値を名前と値のペアにマップし、リストを辞書として親へのマッピングに保存したいと思います。コードは次のようになります。

public class Parent
{
    public long Id { get; set; }
    public Dictionary<string, string> Attributes { get; set; }
}

これは可能であるように思われますが、HBM ファイルに配置する適切なマッピングがわかりません。

4

1 に答える 1

3

@Rippo - あなたのコメントは解決策を示してくれましたが、ガイドラインに従って解決策を示すためにここにコードを投稿しています。

<?xml version="1.0" encoding="utf-8"?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="com.so.answers" namespace="com.so.answers">
  <class name="Parent" table="Parent" lazy="false">
    <id name="Id" column="ParentId" />
    <map name="Attributes" table="Attribute">
      <key column="ParentId"/>
      <index column="Key" type="System.String"/>
      <element column="Value" type="System.String"/>
    </map>
  </class>
</hibernate-mapping>
于 2013-05-08T14:03:25.313 に答える