【发布时间】:2011-11-14 05:24:01
【问题描述】:
我有两个表存在于同一个 Oracle 数据库系统中,但架构不同,我已将其映射如下:
ABC.Store:
component schema="ABC" table="Stores"
{
property name="Id" fieldtype="id" generator="sequence" sequence="store_id_seq";
property name="Products" fieldtype="one-to-many" cfc="Product";
}
DEF.Product:
component schema="DEF" table="Products"
{
property name="Id" fieldtype="id" generator="sequence" sequence="product_id_seq";
}
我在 application.cfc 中将我的应用程序的默认数据源设置为 this.datasource = "ABC"。
我在这里遇到的问题是每当我尝试保存Product 时。 ColdFusion 吐出一个错误,指出在Product 上找不到Id 属性的序列。这是因为product_id_seq 序列在 DEF 模式中,但 ColdFusion 试图在 ABC 模式中找到它,即使我将Product 上的模式设置为 DEF。
如果我将Product 上的datasource 属性设置为DEF,则会收到一条错误消息,指出Store 上的Products 属性未映射。这是因为,正如 ColdFusion 文档所述:
“由于 Hibernate 配置使用单个数据源,所有相关的 CFC(使用 ORM 关系)必须具有相同的数据源。”
那么我的问题是,如何使用序列作为 ID 生成器将两个表映射到两个不同的模式中?
如果我为序列指定架构,我已经能够让它工作:
property name="Id" fieldtype="id" generator="sequence" sequence="def.product_id_seq";
但这是硬编码的,我希望它是动态的,并从配置 bean 中提取模式名称。
【问题讨论】:
标签: oracle orm coldfusion mapping coldfusion-9