2011-02-08 9 views
1

Hey Guys、
私はnhibernate 2.2を使用していますが、答えが見つからないようです。私のプログラムでは、hibernate.cfg.xmlファイルに割り当てられているデフォルトのスキーマを次のように使用しています。
<property name="default_schema">MY_SCHEMA</property>
生成されたすべてのSQL文に対して広告として機能しますが、デフォルトのスキーマを割り当てる必要があるうまく:
<property name="Count" type="int" formula="SELECT COUNT(*) FROM DETAILS WHERE DETAILS.ID = ID" />
MY_SCHEMAの変更が比較的頻繁に、私はハードコードされたスキーマに頼ることなく、このことは可能です<property name="Count" type="int" formula="SELECT COUNT(*) FROM MY_SCHEMA.DETAILS WHERE DETAILS.ID = ID" />
として解釈されるSQLが必要?ありがとう!nHibernateのデフォルトスキーマは未使用です。

ケビン

+0

ログオントリガーを使用 http://stackoverflow.com/questions/283589/oracle-setting-per-user-default-scheme-not-altering-a-session –

答えて

0

セッションファクトリを構築するときにマッピングを変更することができます。

もちろん、FluentやConfORMのようなコードベースのマッピングソリューションを使用した方が簡単です。

+0

迅速な返信をありがとう!セッションファクトリ内のマッピングをどのように変更するのか、現在のdefault_schemaが定義されている場所を理解しています。私の問題は、式が "生成されたSQL"ではないので、nHibernateは他のすべてのものと同じように、修飾されていないテーブル名にdefault_schemaを適用しないということです。設定ファイルから現在のデフォルトを引き出す方法があるのでしょうか、おそらくnHibernateにSQLを生成するように式を処理するよう指示するのでしょうか? – JCFire

+0

多分私の答えは十分ではなかった。私が提案しているのは、構成を作成するときに** **式を変更することです。 –

+0

悲しいことに、私たちは基本的なxmlファイルの使用に拘束されており、設定を動的には行っていません。 – JCFire

関連する問題