1

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 に影響を与えている可能性のある設定を追跡したりする方法です。そのレベルにあるようです。

4

1 に答える 1

2

ええ、どうやら application.cfc の customTagPaths と関係があるようです

なんで?わからない。おそらく答えを知っているAdobeのCF開発者がいると確信しています。

詳細な説明については、こちらの回答を参照してください: https://groups.google.com/forum/?fromgroups#!topic/coldbox/dFMG5PB6wn4

于 2013-06-04T21:03:38.260 に答える