Это повторяется и может быть ошибкой. Для этого примера у меня есть три таблицы:
Оплата
PaymentID
дата
paymentType
Credit
PaymentID
cardNo
cardTypeID
CardType
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 к предложениям select и 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 не существует" при вызове простой загрузки объекта ("cardType").
У любого есть идея, почему он не применил бы его правильно к дочернему классу, и возможно ли это параметр конфигурации, который мне не хватает.
Заранее спасибо.