【发布时间】:2011-08-17 03:10:25
【问题描述】:
这是可重复的,可能是一个错误。对于这个例子,我有三个表:
付款
付款ID
日期
支付类型
信用
付款ID
卡号
卡片类型ID
卡片类型
身份证
说明
Payment 和 Credit 分别是父类表和子类表。代码如下:
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=?
这会在调用简单的 entityload("cardType") 时导致很多“CardType 不存在”错误。
任何人都知道为什么它不能正确地将其应用于子类,这可能是我缺少的配置设置。
提前致谢。
【问题讨论】:
标签: orm coldfusion