2013-06-04 1 views
1

У нас есть существующее приложение ColdBox, в котором мы не использовали ORM, но хотим начать.Не удалось найти компонент ColdFusion или ошибку интерфейса после обнаружения cfc

У меня есть приложение примера orm с сайта ColdBox, и я изменил структуру this.ormsettings в application.cfc, чтобы включить источник данных для моего существующего приложения. Затем я создал постоянный cfc и дал ему имя таблицы в свойствах компонента, которое соответствовало свойствам одной из таблиц в db. Я прокомментировал другой код, который ссылался на образец «Автор» и «Книга», и использовал мой новый, называемый list() на введенной сущности, и он волшебным образом перечислял все записи из таблицы db, когда я запускаю страницу в браузер, поэтому я знаю, что он работает.

Затем я скопировал постоянный файл cfc из примера приложения в мое существующее приложение, которое мы пытаемся перестроить, добавили те же параметры orm в свой application.cfc (и this.ormenabled = true) и добавили инъекцию entityService метаданные в верхней части обработчика моего приложения. Я перезапустил ColdFusion, чтобы отобрать биты конфигурации orm и попытался посетить страницу, и я получаю сообщение об ошибке: Could not find the ColdFusion component or interface <the name of my cfc>.

Я уверен, что это поиск файла и что мой путь cfclocation в ormsettings верен, потому что, если я сменил метаданные инъекции entityService, чтобы ссылаться на что-то поддельное (например, «Foo»), тогда я получаю другую ошибку: CFC с именем сущности Foo не может быть найден. ' Поэтому я знаю, что он сам находит файл .cfc.

Трассировка стека показывает, что ошибка происходит в системе/orm/hibernate/util/CFORMUtil.cfc в строке 69 в вызове EntityNew(). Так как файл идентичен (прямая копия/вставка) на тот, который я могу нормально запустить в примере приложения, я сильно подозреваю, что это что-то на уровне приложения, которое отличается от того, что EntityNew вызывает, чтобы выкинуть эту ошибку. Поскольку EntityNew - это функция ColdFusion, я не могу вмешаться и посмотреть, что происходит неправильно или что отличает примерное приложение и мое приложение. Я поставил throw(message=arguments.entity) непосредственно перед этой линией, и в обоих приложениях значение представляет собой одну и ту же строку (имя объекта из метаданных впрыска).

Что мне нужно, так это выяснить, что происходит или отслеживать, какие настройки могут влиять на ORM ColdFusion, поскольку он, кажется, находится на этом уровне.

+0

Вам не нужно перезапустить CF, вам нужно 'ORMReload()' – Henry

+0

У меня были аналогичные проблемы с ОРМ и ХФУ, так что я просто использовал сопоставления для решения проблем. – BKK

+0

@Henry, котор нужно знать - спасибо – jinglesthula

ответ

Смежные вопросы