У меня есть две таблицы, которые существуют в одной и той же системе баз данных 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";
}
Я установил источник данных по умолчанию для своего приложения как this.datasource = "ABC"
в application.cfc .
Проблема, с которой я здесь сталкиваюсь, заключается в том, что всякий раз, когда я пытаюсь сохранить Product
. ColdFusion выдает ошибку, из-за которой невозможно найти последовательность для свойства Id
в Product
. Это связано с тем, что последовательность product_id_seq
находится в схеме DEF, но ColdFusion пытается найти ее в схеме ABC, даже если для Product
я установил схему как DEF.
Если я установлю атрибут datasource
на Product
равным DEF
, я получу сообщение об ошибке, согласно которому свойство Products
для Store
не сопоставлено. Это потому, что, как говорится в документации ColdFusion:
"Поскольку в конфигурации Hibernate используется один источник данных, все связанные CFC (использующие отношения ORM) должны иметь один и тот же источник данных."
Тогда у меня вопрос , как мне сопоставить две таблицы в двух разных схемах, используя последовательность в качестве генератора идентификаторов?
Я смог заставить его работать, если указать схему для последовательности:
property name="Id" fieldtype="id" generator="sequence" sequence="def.product_id_seq";
Но это жестко запрограммировано, и я бы хотел, чтобы оно было динамическим и получало имя схемы из bean-компонента конфигурации.