这是可重复的,可能是一个错误。在这个例子中我有三个表:当映射到子类时,ColdFusion ORM关系映射'一对多'问题
付款
paymentID
日期
paymentType
信用
paymentID
cardNo
cardTypeID
CardTyp È
ID
说明
付款和信用分别父和子类表。代码如下:
payment.cfc
component persistent="true" table="payment" discriminatorcolumn="paymentType"{
property name="paymentID";
property name="date";
}
credit.cfc
component persistent="true" extends="payment" joincolumn="paymentID"
table="credit" discriminatorvalue="ccard"{
property name="cardNo";
property name="cardTypes" fieldtype="many-to-one" lazy="true" cfc="cardType"
fkcolumn="cardTypeID";
}
cardType.cfc
component persistent="true" table="cardType"{
property name="id";
property name="description";
property name="creditCards" fieldtype="one-to-many" lazy="extra"
type="struct" structkeycolumn="id" cfc="credit" fkcolumn="cardType";
}
错误与cardType.cfc中的“一对多”关系有关。当ORM生成SQL,它试图将fkcolumn适用于选择和WHERE子句父类:
select
creditcard0_.cardType as cardType30569_1_,
creditcard0_.PaymentID as PaymentID1_,
creditcard0_.PaymentID as PaymentID30570_0_,
creditcard0_.Date as Date30570_0_,
creditcard0_1_.cardNo as cardNo30572_0_,
creditcard0_1_.cardType as cardType30572_0_
from
Payment creditcard0_
inner join
CreditCardPayment creditcard0_1_
on creditcard0_.PaymentID=creditcard0_1_.PaymentID
where
creditcard0_.cardType=?
这导致了大量的“CardType不存在”的错误时,一个简单的entityload(“cardType” ) 叫做。
任何人都有任何想法,为什么它不会正确地应用于子类,它可能是我缺少的配置设置。
在此先感谢。
不幸的是这不会持久化类的工作。 –
你可以制作一个非持续性的“基础”课程,并有支付和学分对象吗? –
不是,如果我想继续使用它作为具有鉴别器列的欲望的继承对象。如果关闭持久性,CF将返回空值错误,因为父类不再是已加载的实体。 –