ORM を使用していないが、開始したい既存の ColdBox アプリケーションがあります。
ColdBox サイトから orm サンプル アプリを起動して実行this.ormsettings
し、application.cfc の構造体を変更して、既存のアプリのデータソースを含めました。次に、永続的な CFC を作成し、データベース内のテーブルの 1 つと一致するコンポーネントのプロパティでテーブル名を付けました。サンプルの 'Author' と 'Book' のものを参照する他のコードをコメントアウトし、list()
注入された entityService で呼び出された新しいコードを使用し、ブラウザーでページを実行すると、魔法のように db テーブルからすべてのレコードを一覧表示しました、だから私はそれが働いていることを知っています。
次に、オーバーホールしようとしている既存のアプリにサンプル アプリから永続的な cfc ファイルをコピーし、その application.cfc に同じ orm 設定を追加し (および this.ormenabled = true)、entityService インジェクション メタデータを一番上に追加しました。私のアプリのハンドラーの。ColdFusion を再起動して、orm 構成ビットを取得し、ページにアクセスしようとすると、エラーが発生しました: Could not find the ColdFusion component or interface <the name of my cfc>
.
ファイルが見つかり、ormsettings の cfclocation パスが正しいことは確かです。entityService インジェクション メタデータを変更して何か偽物 (「Foo」など) を参照すると、別のエラーが発生するためです。フーが見つかりませんでした。だから私はそれが.cfcファイル自体を見つけていることを知っています。
スタック トレースは、呼び出しの 69 行目の system/orm/hibernate/util/CFORMUtil.cfc でエラーが発生していることを示していEntityNew()
ます。このファイルは、サンプル アプリで適切に実行できるファイルと同一 (直接コピー/貼り付け) であるため、EntityNew 呼び出しがそのエラーを投げ出す原因となるアプリケーション レベルの何かが異なるのではないかと強く疑っています。EntityNew は ColdFusion の関数であるため、実際に介入して、サンプル アプリと私のアプリの間で何が問題になっているのか、何が違うのかを確認することはできません。throw(message=arguments.entity)
その行の直前にa を配置しましたが、両方のアプリで値は同じ文字列 (インジェクション メタデータからのエンティティ名) です。
私が必要としているのは、何が起こっているのかを調査したり、ColdFusion ORM に影響を与えている可能性のある設定を追跡したりする方法です。そのレベルにあるようです。