2

ORM を使用する ColdFusion で、2 つのテーブルを参照する外部キー列をマップするにはどうすればよいですか?

私の例。

現時点では、画像は人間またはエイリアンのいずれかに属することができます

Image.cfc
property name="imageID" fieldtype="id" generator="guid";

// Related Object Properties (many-to-one)
property name="Human" fieldtype="many-to-one" fkcolumn="HumanID" cfc="human";
property name="Alien" fieldtype="many-to-one" fkcolumn="AlienID" cfc="alien";

これにより、次のようなテーブルが残ります..

Image.cfc

    ID   NAME    HumanID  AlienID
    1    img1    10       NULL
    2    img2    NUll     8

私にとってNULLは臭い!

では、これを両方のオブジェクトの 1 つのマッピングに置き換えることはできますか? または、カテゴリ テーブルを作成する場合は? 何か案は?

ありがとう

スパーク

4

1 に答える 1

1

1 つのプロパティを複数の親オブジェクトにマップすることはできません。したがって、ここには 2 つのオプションがあります。

基本の Image クラスを拡張する HumanImage と AlienImage のクラスを持つ階層ごとに、これをクラスとしてマップする必要があります。

// Image.cfc
component persistent="true" {
    property name="id" generator="guid";
    property name="name";   
}

// AlienImage.cfc & HumanImage.cfc
component persistent="true" extends="Image" joincolumn="id" {
}

// Alien.cfc
component persistent="true"  {
    property name="id" generator="guid";
    property name="Image" fieldtype="one-to-many" cfc="AlienImage"
      fkcolumn="fkAlienID";
}

// Human.cfc
component persistent="true"  {
    property name="id" generator="guid";
    property name="Image" fieldtype="one-to-many" cfc="HumanImage"
      fkcolumn="fkHumanID";
}
于 2012-05-14T08:30:54.653 に答える