2

在使用 ORM 的 ColdFusion 中,如何映射引用两个表的外键列?

我的例子。

目前,图像可以属于人类或外星人

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 闻起来很糟糕!

那么我可以用两个对象的一个​​映射替换它吗?或者如果我创建一个类别表?有任何想法吗?

谢谢

火花

4

1 回答 1

1

您不能将单个属性映射到多个父对象。所以你在这里有两个选择。

您需要将其映射为每个层次结构的类,其中您将拥有 HumanImage 和 AlienImage 类,它们扩展了基本 Image 类

// 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 回答