問題タブ [toplink]
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 - トップリンクのバグ。有効なSQLの結果が空で、結果が空ではない
どうしてそれは可能ですか?
Toplink(DBはOracle)でEJBQLを実行しており、query.getResultList
空です。
だが!
ログレベルを切り替えFINE
て、TopLinkが生成するSQLクエリを受け取ったとき、データベースでこのクエリを実行しようとしましたが、(奇跡!)空ではない結果が得られました!
その理由は何で、どのように扱われますか?前もって感謝します!
PS例外はありません。
アップデート:
クエリログ:
このクエリは100,000行を返しますが、toplinkはそうではないと信じています...
hibernate - OpenJPAでFetchBatchSizeの数を決定する方法は?
OpenJPA は、FetchPlan でいくつかのパラメーターを提供しました。(http://openjpa.apache.org/builds/1.2.0/apidocs/org/apache/openjpa/persistence/FetchPlan.html) そして、そのうちの 1 つである FetchBatchSize で行き詰まりました。誰かが自分の経験を親切に共有してくれることを願っています。
これがシナリオです。たとえば、データベース (MS-SQL) から最大 1000 レコードを選択するとします。
FetchBatchSize を 100 に設定すると、時間コストが劇的に 2 秒未満に短縮されました。これは良いことですが、FetchBatchSize 100 より少ない 50 レコードのみを取得しようとすると、はるかに長い時間がかかります。 (私のテストでは50秒)これは受け入れられません。
わかりましたので、FetchBatchSize がユーザーが希望する数を超えると、さらに時間がかかると思います。ユーザーが設定したカウントに従って、実行時に FetchBatchSize を変更できます。あなたは 1000 が必要で、私は FetchBatchSize を 1000 に設定し、あなたは 100 が必要で、私はそれを 50 に設定しましたが、ユーザーが少数のレコードしか必要としない場合はどうでしょうか? 私も FetchBatchSize を 2 のように設定しますか?
私の質問は、maxResultCount が可変の場合に適切な FetchBatchSize を選択する方法ですか? ほとんどのシナリオに適した openJPA ドキュメントに 20 などの DEFAULT 値がある場合はどうなりますか? または、実行時に変更することをお勧めします。
どんなコメントでも大歓迎です。ありがとう!
java - TopLinkでカウント問合せの結果を取得するにはどうすればよいですか?
私はこれを持っています:
ご覧のとおり、結果は Vector で、ReportQueryResult 型の結果が 1 つあります。結果を取得するよりスマートな方法はありますか
java - JPA継承
こんにちは私はJPAを初めて使用し、JPAが継承をどのように処理するかを理解するのに苦労しています。
DBスキームを変更せずに解決する必要がある特定の問題がありますが、解決策が見つからない場合は、別のDBスキームを使用した解決策の提案をいただければ幸いです(Hibernate / TopLinkソリューションを歓迎します)。
不明な点がある場合、または詳細が必要な場合は、その旨を教えてください。前もって感謝します!
私はこのデータベースを持っています:
これまでのところ、私のエンティティは次のようになっています。
現在、Fruitオブジェクトを問題なく永続化できます。Appleオブジェクトは、Fruitオブジェクトがまだ永続化されていない場合にのみ永続化されます。
すでに永続化されているFruitオブジェクトを使用してAppleオブジェクトを永続化しようとすると:
JPAがすでに存在するId="1"でFruitテーブルに新しい行を作成しようとするため、エラーが発生します。
..
sql - ORA-00036: バインド変数を使用するようにトップリンクを構成した後、再帰SQLレベルの最大数(50)を超えました
永続性と Oracle データベースに Toplink を使用するアプリケーションがあります。最近、特に db/query レベルでパフォーマンスの問題が発生しました。私は一連のトリガーとストアド プロシージャに大きなロジックを持っていますが、これは不適切に記述されており、変更トリガーの問題に対する回避策があります。アプリケーションは数年前から実稼働しており、新しいリリースやその他の優先度の高い承認を取得する官僚機構を考慮すると、このコードを書き直すことが最後の解決策です。だから私は迅速な修正を探しています。
パフォーマンスを改善する 1 つの解決策は、バインド変数を使用することです。私の問題は、トップリンクの session.xml に bind-all-variables と cache-all-statements を追加した後、特定の UI で、くだらないコードをトリガーし、この構成を変更する前に問題なく機能していたときに、次のエラーが発生することです。
ORA-00036: 再帰SQLレベルの最大数(50)を超えました
私の質問は、bind-variable 設定を追加した後にのみこのエラーが表示されるのはなぜですか? くだらないコードを変更せずに、バインド変数で動作させるにはどうすればよいですか?
ejb-3.0 - アプリケーションを BMT から CMT に変換する際の問題
私は、weblogic サーバー 10.3 と ejb 3.0、および ORM 用の Toplink を使用しているアプリケーションを持っています。現在、トランザクションは UnitOfWork.commit() を使用して、createXX()、deleteXX() などの EJB リモート コンポーネント インターフェースに記述された特定のアクションをコミットしています。
uow.commit(); にコメントしようとすると 私のコードで ejb-jar.xml を宣言的に変更して、問題の特定の EJB モジュールがコンテナを持つようにし、createXX() メソッドに @TransactionAttribute(value=REQUIRES_NEW) を使用しました。理想的には、コンテナはしかし、それはコミットしていません。エラーはありません。参考までに、weblogic サーバー コンソールのチェックボックスで [グローバル トランザクションのサポート] がオフのままになっています。
プロンプトにはレコードが正常に作成されたと表示されますが (私のビジネスメッセージに従って)、ログをチェックインしている間、実際のコミットは uow.uow.registerNewObject(EntityObject); の後に発生していません。実行されます。
java - JPA1-@Entity注釈付きクラスに@Idがないため、IDはスーパークラスの結果の一部でありエラーになります
現在、永続性ユニットのJPAを評価していますが、idがスーパークラスの一部である場合に問題が発生しました。@Idは@Entitiyアノテーションと同じクラスにある必要があるというエラーメッセージが常に表示されます。
XMLマッピングファイルを使用すると、この問題をアーカイブできます。注釈を使用した既知の解決策はありますか?
WebLogic 10.3.1を使用する必要があるという問題のため、JPA1とEclipseLink / TopLinkに制限されていますが、解決策が見つかりません。
java - ORA-01400: 1 対 1 の関係に null エラーを挿入できません
私はこのコードを持っています
}
そしてこのエラー
内部例外: java.sql.SQLException: ORA-01400: NULL を ("RPINGRE"."ARE_SOLI"."ARE_SOLI_SOLIASPI_ID") に挿入できません
これはAspirante
エンティティ(フラグメント)です
およびSolicitud
エンティティ (フラグメント)
classnotfoundexception - TopLink例外
こんにちは私はTopLinkで働いています。TomCatサーバーを起動しているときに、次の例外が発生します。
私を助けてください。
java - JPAでのバッチ更新(トップリンク)
JPAトップリンクを使用してバッチ更新(EntityManagerpersist()またはmerge())を実行する方法はありますか?