セッションファクトリからデフォルトのスキーマ名を取得する方法があるのかどうか疑問に思っていました。なぜなら、1つのネイティブSQLを使用する必要があり、複数のスキーマと1つのデータソースに対して複数のセッションファクトリがあるからです。生成されたすべてのハイバネートクエリは、他のスキーマへの選択アクセス権を持つ単一のユーザーによって実行されています。これは、トリックを行いますセッションファクトリからプログラムでHibernateのデフォルトスキーマ名を取得していますか?
10
A
答えて
15
私はHibernateはネイティブSQLクエリで使用することができる{H-スキーマ}交換を有することを見出しました。したがって、oracleデータベースの1つのスキーマに接続していて、異なるスキーマに対して問合せを実行する場合は、この処理が正常に行われます。例のようになります。
select * from {h-schema}table_name
この方法の代わりに、クエリで手動replaceAll
をやって、休止状態は、各セッションの工場は"hibernate.default_schema"
プロパティで設定されていることを与えられたすべての世話をします。
2
:
SessionFactoryImplementor sfi = (SessionFactoryImplementor) getSessionFactory();
Settings settings = sfi.getSettings();
ConnectionProvider connectionProvider = settings.getConnectionProvider();
try {
Connection connection = connectionProvider.getConnection();
DatabaseMetaData databaseMetaData = connection.getMetaData();
String url = databaseMetaData.getURL();
//substring the string to what you want
System.out.println(url);
} catch (SQLException e) {
//throw something
}
+0
私のシステムでは、これはスキーマではなく接続URLに応答します。 – Markus
3
Criteria APIのRestrictions.sqlRestriction(...)を使用するときに、{h-schema}を使用するというJohnの解決策に問題がありました(おそらく、この置換は別のHQL API内で行われるためです)。 Michaelのソリューションと同様に、私は次のように使用しました。
SessionFactoryImplementor sfi = (SessionFactoryImplementor)sessionFactory;
String name = sfi.getSettings().getDefaultSchemaName();
関連する問題
- 1. Hibernateでモデルからテーブル名を取得
- 2. プログラムからobjectdbデータベースから値を取得しています
- 3. nHibernateのセッションファクトリから開いているセッションオブジェクトのリストを取得する方法はありますか?
- 4. プログラムで(C#で)javaw.exeプロセスからjavaアプリケーション名を取得しますか?
- 5. Hibernateを介して接続しているデータベース名はどのようにして取得できますか?
- 6. Hibernateからクラス名を取得する方法は?
- 7. プログラムで剃刀ビューからセクション名を取得する
- 8. HibernateはcreateCriteria()の結果からIDを取得しています
- 9. TomcatでのHibernateセッションファクトリの設定
- 10. Hibernate 4抽象ファクトリでセッションファクトリを作成します
- 11. hibernateを使用してテーブルからデータを取得する
- 12. Android:layout_marginBottomをプログラムで取得しますか?
- 13. JPA2(JBoss7.1のHibernate)entityManager.find()がDBからではなく、キャッシュからデータを取得しています
- 14. アンドロイドでビュー名のプロパティを取得していますか?
- 15. Facebookのid配列から名前のリストを取得していますか?
- 16. JavaでHibernateのクエリ結果からカラム名を取得するには?
- 17. sqliteデータベースの結果ファイルからファイル名を取得していますか?
- 18. Hibernateを介してSQLデータベースからランダムオブジェクトを取得
- 19. spring + hibernateプロジェクトのmysql-databaseからオブジェクトを取得できない?
- 20. Pythonで例外クラス名を取得していますか?
- 21. WIXでSQL Serverインスタンス名を取得していますか?
- 22. MediaWikiページのURLをプログラム名でPHPで取得します
- 23. ContactsContractsから名前と電話番号を取得しています。 Androidで?
- 24. Webページから変数の名前を取得しますか?
- 25. joomlaの名前からカテゴリIDを取得しますか?
- 26. Hibernate:セッションファクトリを閉じてもc3p0接続プールが閉じない
- 27. ドロップダウンリストからプログラムを選択して取得リクエストの値を取得しますか?
- 28. アンドロイドエミュレータ/デバイスからプログラムでファイルを取得
- 29. コンフィグレーションセクションをプログラム名で知らなくても取得できます
- 30. クライアントのPC名を取得していますか? (Windows認証)
Restrictions.sqlRestriction(...)を使用するときに問題が発生しました –
これは機能しますが、正式に文書化されていますか? –