我正在使用CF9 ORM -
我有一个对象模型,其中有多个对象可以与一个特定对象具有一对一的关系。有没有办法说明与两种潜在CFC之一的反比关系?
CFC 1a(ProblemType1):
property name="Product" cfc="Product" fieldtype="one-to-one" fkcolumn="productID" ;
CFC 1b(ProblemType2):
property name="Product" cfc="Product" fieldtype="one-to-one" fkcolumn="productID" ;
CFC 2:
property name="Problem" fieldtype="one-to-one" cfc=???;
我可以使用这个接口吗?还是...?
答案 0 :(得分:3)
CFC 1a和CFC 1b都可以是父实体CFC 1的子类.CFC 1应该与“Product”有关系,它将由两个子类继承。然后,CFC 2可以在其关系中指向CFC 1。
示例实体:
/** CFC 1 **/
component persistent="true" {
property name="Product" cfc="Product" fieldtype="one-to-one" fkcolumn="productID";
}
/** CFC 1a **/
component persistent="true" extends="baseProblem" {
// problemtype1 specific properties go here
}
/** CFC 1b **/
component persistent="true" extends="baseProblem" {
// problemtype2 specific properties go here
}
/** CFC 2 **/
component persistent="true" {
property name="Problem" fieldtype="one-to-one" cfc="baseProblem";
}
如果采用这种方法,您可能需要查看inheritance mapping,特别是discriminatorColumn
和discriminatorValue
属性。在不知道如何设置数据库模式的情况下,很难就这一点提供进一步的建议,但文档应该可以帮助您入门。