У нас есть существующее приложение 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, поскольку он, кажется, находится на этом уровне.
Вам не нужно перезапустить CF, вам нужно 'ORMReload()' – Henry
У меня были аналогичные проблемы с ОРМ и ХФУ, так что я просто использовал сопоставления для решения проблем. – BKK
@Henry, котор нужно знать - спасибо – jinglesthula