如何映射引用两个表的外键列?

时间:2012-05-13 20:39:46

标签: coldfusion coldfusion-9

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

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

谢谢

Spark

1 个答案:

答案 0 :(得分:1)

您无法将单个属性映射到多个父对象。所以你有两个选择。

您需要将其映射为class per heirarchy,其中您将拥有扩展基础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";
}