問題タブ [show-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.

0 投票する
1 に答える
1278 参照

sql - NHibernate が SQL をコンソールに出力しない

NHibernate が生成する SQL をコンソールに出力するように構成しました。NUnit から実行したい統合テストを含む DLL の app.config に以下を追加しました。

ただし、SQL はまだ Console.Out に出力されていません。NHibernate クエリの結果の SQL を表示するために設定する必要がある別の設定を考えられる人はいますか?

0 投票する
2 に答える
5930 参照

eclipse - 生成された SQL を Eclipse のトップリンクに表示する

EclipseLink ライブラリを Eclipse で (開発時に) 使用しており、TopLink にデプロイしています。生成された SQL ステートメントを表示する必要があります。

次のpersistence.xmlを使用しています:

生成された sql ステートメントを表示する必要があることはわかっていますが、そうではありません。

0 投票する
3 に答える
8568 参照

jpa - Hibernate Envers なしで JPA を監査する方法

Java Web App に監査モジュールを作成する必要があります。HibernateではなくEclipseLinkを使用しています(Enversは使用できません)。JPAが実行しているSQLまたはJPQLを取得するためにいくつかの方法を検索したため、次のようなログを記録できました。

実際には、この情報を履歴データベースのテーブルに保存します。そのため、いつでもこの情報を簡単に取得できます。そのため、「SHOW SQL」パラメータは私にとって十分ではありません。ソース コードで操作できるように、SQL 文字列が本当に必要です。

JPA 仕様でEntityListener機能を見つけ、ロギング コードを配置するのに最適な場所だと思いました。たとえば、postUpdate メソッドは、オブジェクトが更新された時間を記録できます。しかし、私の問題は、実行されたSQLを取得できないことです。

これが私が意味することの例です:

しかし、「object.getSQL()」は存在しません。では、SQL ステートメントを取得するにはどうすればよいでしょうか。

誰かが私を正しい方向に向けることができれば、私は感謝します!

0 投票する
1 に答える
1549 参照

hibernate - @NamedQueryに適用されるTOP句

@NamedQuery(name="CustomerMarket.findByMarketId", query="SELECT DISTINCT c.marketid FROM CustomerMarket c WHERE c.marketid LIKE :mask") クラスCustomerMarket定義でクエリに名前を付けまし た。

350_000の結果のうち最初の1_000を取得したいので、setMaxResultを適用しました。

このクエリを実行した後、server.logを確認し、これを見つけました

正しいデータ、最初の1_000レコードを取得しましたが、TOP制限が適用されているかどうかと場所を知りたいです。

このTOP句はどのように処理されますか?

  1. TOPはHibernateによって使用される呼び出し可能ステートメントに適用され、これはログに表示されません
  2. TOPは、DBから結果を受け取った後に適用され、Java側でデータをフィルタリングします
  3. または他の何か

ほとんどすべてを表示するためにpersistence.xmlとlog4j.propertiesを設定しましたが、SQLスクリプトを持っているので、問題はないと思います。

編集:両方の場合(setMaxResultsを使用する場合と使用しない場合)のパフォーマンスを測定し、次の時間を取得しました:

TOPを使用しない最初のケースでは、選択ごとに平均1400msの時間が消費されました。TOPが実装された2番目のケースでは、平均時間消費は約150msでした。

また、このTOP実装は、使用されているHibernate方言(Sybaseを使用しています)に依存している可能性があるとも言われました。また、ログに表示される選択は、DBに送信される選択とまったく同じです。しかし、この場合、結果セットからの350kの結果(または結果がHibernateセッションにどのように保存されるか)をメタデータなしで構造リストに変換するのに非常に長い時間がかかるのは正常ですか?内部的には次のように変換されていると想像できます。

これはそれほど複雑ではないようですが、なぜこの時差があるのですか。Hibernateは多くの機能を備えた複雑なフレームワークであるため、おそらく私は素朴です。:-D

0 投票する
3 に答える
497 参照

c# - How to execute a SHOW statement with OleDb, C#?

Tried following c# code to get all tablenames in the database, but I get an error-message saying:

"System.Data.OleDb.OleDbException (0x80040E14): Invalid SQL statement; expected 'DELETE', 'INSERT', 'PROCEDURE', 'SELECT', or 'UPDATE'..."

How do I execute this kind of commands with OleDb?

Thanks :)