マルチテナントアプリケーションがあり、実行時にスキーマ名を変更する必要があるため、共有 DB 個別スキーマSaaS設計になります。
EntityManagerFactory の作成は非常にコストがかかるため、EntityManger の開始後にすべての DB 呼び出しの前に EMF アプリケーション スコープを作成し、スキーマを指定したいと考えています。私はPostgresql 8.1 を使用していますが、Postgesql は DB 接続の設定時にスキーマの選択をサポートしていないため、異なるスキーマのテーブルからクエリを実行する唯一の方法は、必要な DB を作成する前に「 SET search_path = "my.schema" 」をクエリすることだと思いました呼び出します。
私が試してみました;
StringBuilder sb = new StringBuilder();
sb.append("SET search_path TO my.schema");
entityManager_.createNativeQuery(sb.toString()).executeUpdate();
「 java.lang.IllegalStateException: You cannot call executeUpdate() on this query.」という例外が発生しました。クエリの種類が正しくありません'
PersistenceProvider としてeclipselinkを使用し、アプリケーション マネージャーとしてGlassfishを使用しています。
とにかく私はこれを成し遂げることができますか?
これを達成するためのより良い方法があれば、私はどんな提案にもオープンです
前もって感謝します