這是可重複的,可能是一個錯誤。在這個例子中我有三個表:當映射到子類時,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將返回空值錯誤,因爲父類不再是已加載的實體。 –