Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle 如何映射ColdFusion Form中处于不同模式中的两个实体?_Oracle_Orm_Coldfusion_Mapping_Coldfusion 9 - Fatal编程技术网

Oracle 如何映射ColdFusion Form中处于不同模式中的两个实体?

Oracle 如何映射ColdFusion Form中处于不同模式中的两个实体?,oracle,orm,coldfusion,mapping,coldfusion-9,Oracle,Orm,Coldfusion,Mapping,Coldfusion 9,我有两个表,它们存在于同一个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"; } DE

我有两个表,它们存在于同一个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”

我在这里遇到的问题是每当我试图保存
产品时。ColdFusion抛出一个错误,指出在
Product
上的
Id
属性中找不到序列。这是因为
product\u 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中提取模式名称。

我唯一能够无缝工作的方法是:

  • 在数据库中创建一个用户,在本例中是MySQL,该用户可以访问所需的模式
  • 在CFIDE中设置和配置单个数据源,该数据源使用新创建的用户进行身份验证
  • 将所有所需持久对象中的
    datasource
    属性设置为新创建的数据源
  • 在所有所需的持久对象中设置
    schema
    属性,以引用正确的模式或数据库。(这两者在ColdFusion表单中是同义词)

  • 注意:在您的COM中引用CFC时,请务必使用完整组件路径。

    谢谢,这对我在MySQL上也有效,但只有在我对其他数据库使用“catalog”属性而不是“schema”时才有效。