在使用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
答案 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";
}