問題タブ [native-sql]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 純粋な JPA でネイティブ クエリのデフォルト データベース スキーマを構成するにはどうすればよいですか?
弊社の状況は以下の通りです。
- エンタープライズ アプリケーションでの永続化には、(必ず純粋な) JPA を使用します。
- パフォーマンス上の理由から、かなり複雑なネイティブ クエリをあちこちで使用しています。
- データベース (Oracle 11g) にアクセスするとき
APP_ACCESS
は、テーブルの「所有者」とは異なるデータベース ユーザーを使用します (APP_OWNER
)。これは、データベース管理者からの厳しい要件です。 - 現時点では、スキーマ名 (
APP_OWNER
) がネイティブ クエリにハードコードされています。
"SELECT * FROM " + DatabaseSchemaConstants.SCHEMA_NAME + ".LOCATION"
言うまでもなく、「所有者」ユーザー名の変更はコードの変更を意味するため、このハードコーディングについて特に満足しているわけではありません。
だからここに私の質問があります:
純粋な JPA でネイティブ クエリのデフォルト データベース スキーマを構成するにはどうすればよいでしょうか?
これは私がこれまでに見つけたものです:
具体的には、永続化ユニットとファイルの組み合わせを提案するこの回答:orm.xml
しかし、これはネイティブ クエリには当てはまらないと思います (現在テスト中です)。ここでのもう 1 つの問題は、orm.xml
実際には構成用ではないということです。(ただし、Java コードでハードコーディングするよりも優れています)。
同様の答えを持つ別の投稿:
さらなる質問:
の使用を提案するこの回答を参照してください{h-schema}
。適切に見えますが、Hibernate 固有です。「純粋なJPA」にとどまりたいです。もう 1 つの問題は、Hibernate のドキュメントに {h-schema} に関する記述が見つからなかったことです。そのため、この機能に頼るのは安全ではありません。
JPAエンティティとクエリ、およびネイティブクエリなど、すべてのデフォルトデータベーススキーマを設定する標準的なJPAの方法はありますか?
あるいは、ネイティブ クエリの構成のどこかに設定された「パラメータ」または「設定」を使用できれば、これを解決できます。
java - Hibernate を使用して一時テーブルを作成できない
休止状態を使用して一時テーブルを作成できません ここに私のコードがあります
ここのログでは、コマンドが実行されていることを示していますが、テーブルからコンテンツを選択すると、テーブル sage_temp_table が存在しないため、作成されず、エラーは発生しません。ログは次のとおりです。
ここで、queryString1 テーブルから TEMPORARY を削除すると、もう 1 つのケースが作成され、挿入も行われます。何が間違っているのか教えてください。
java - Spring data - 以前の挿入に応じてデータを挿入
データを 2 つのテーブル (エンティティと関連テーブル) に保存する必要があります。save()
エンティティ リポジトリのメソッドを使用してエンティティを保存するだけです。次に、パフォーマンスのために、ネイティブ sqlの関連付けテーブルに行を挿入する必要があります。行には、以前に保存したエンティティへの参照があります。ここで問題が発生します。外部キーに関する整合性制約の例外が発生します。最初に保存されたエンティティは、この 2 番目のクエリでは不明です。
これが私のコードです:
レポ:
サービス :
@Transactionnal
アノテーションを設定しているのに対し、2 つのクエリは異なるトランザクションにあるようです。また、 を使用して 2 番目のクエリを実行しようとしたentityManager.createNativeQuery()
ところ、同じ結果が得られました...
java - Hibernate クエリの addScalar メソッドを使用する理由
ネイティブ sql に次のようなクエリがあります。
クエリ結果を使用して、従業員オブジェクトを設定できます。同様の行で、addscalar(entity_colname) が追加された同じクエリがあります。
ここでも同様の方法で結果を取得する必要がありますが、addscalar を使用する利点は何ですか?
よろしくジェイ